前言
**“链路追踪”**一词是在2010年提出的,当时谷歌发布了一篇Dapper论文,介绍了谷歌自研的分布式链路追踪的实现原理,还介绍了他们是怎么低成本实现对应用透明的。
其实Dapper一开始只是一个独立的调用链路追踪系统,后来逐渐演化成了监控平台,并且基于监控平台孕育出了很多工具,比如实时预警、过载保护、指标数据查询等。
除了谷歌的dapper,还有一些其他比较有名的产品,比如阿里的鹰眼、大众点评的CAT、Twitter的Zipkin、Naver(著名社交软件LINE的母公司)的pinpoint以及国产开源的skywalking等。
简介
Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。
Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。
SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。
CAT是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。
产品比较
| 类别 | Zipkin | Pinpoint | SkyWalking | CAT |
|---|---|---|---|---|
| 实现方式 | 拦截请求,发送(HTTP,mq)数据至zipkin服务 | java探针,字节码增强 | java探针,字节码增强 | 代码埋点(拦截器,注解,过滤器等) |
| 接入方式 | 基于linkerd或者sleuth方式,引入配置即可 | javaagent字节码 | javaagent字节码 | 代码侵入 |
| agent到collector的协议 | http,MQ | thrift | gRPC | http/tcp |
| OpenTracing | √ | × | √ | × |
| 颗粒度 | 接口级 | 方法级 | 方法级 | 代码级 |
| 全局调用统计 | × | √ | √ | √ |
| traceid查询 | √ | × | √ | × |
| 报警 | × | √ | √ | √ |
| JVM监控 | × | × | √ | √ |
| 健壮度 | ** | ***** | **** | ***** |
| 数据存储 | ES,mysql,Cassandra,内存 | Hbase | ES,H2 | mysql,hdfs |
| github star(截止2021年4月21日) | 14.3k | 11.3k | 16.6k | 15.3k |
PinPoint和skyWalking支持的插件对比
| 类别 | Pinpoint | SkyWalking |
|---|---|---|
| web容器 | Tomcat6/7/8,Resin,Jetty,JBoss,Websphere | Tomcat7/8/9,Resin,Jetty |
| JDBC | Oracle,mysql | Oracle,mysql,Sharding-JDBC |
| 消息中间件 | ActiveMQ, RabbitMQ | RocketMQ 4.x,Kafka |
| 日志 | log4j, Logback | log4j,log4j2, Logback |
| HTTP库 | Apache HTTP Client, GoogleHttpClient, OkHttpClient | Apache HTTP Client, OkHttpClient,Feign |
| Spring体系 | spring,springboot | spring,springboot,eureka,hystrix |
| RPC框架 | Dubbo,Thrift | Dubbo,Motan,gRPC,ServiceComb |
| NOSQL | Memcached, Redis, CASSANDRA | Memcached, Redis |