调用链选型Zipkin,Pinpoint,SkyWalking,CAT
    简介
Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。
Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。
SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。
CAT是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。
基本原理
| 类别 | 
Zipkin | 
Pinpoint | 
SkyWalking | 
CAT | 
| 实现方式 | 
拦截请求,发送(HTTP,mq)数据至zipkin服务 | 
java探针,字节码增强 | 
java探针,字节码增强 | 
代码埋点(拦截器,注解,过滤器等) | 
接入
| 类别 | 
Zipkin | 
Pinpoint | 
SkyWalking | 
CAT | 
| 接入方式 | 
基于linkerd或者sleuth方式,引入配置即可 | 
javaagent字节码 | 
javaagent字节码 | 
代码侵入 | 
| agent到collector的协议 | 
http,MQ | 
thrift | 
gRPC | 
http/tcp | 
| OpenTracing | 
✔ | 
× | 
✔ | 
× | 
分析
| 类别 | 
Zipkin | 
Pinpoint | 
SkyWalking | 
CAT | 
| 颗粒度 | 
接口级 | 
方法级 | 
方法级 | 
代码级 | 
| 全局调用统计 | 
× | 
✔ | 
✔ | 
✔ | 
| traceid查询 | 
✔ | 
× | 
✔ | 
× | 
| 报警 | 
× | 
✔ | 
✔ | 
✔ | 
| JVM监控 | 
× | 
× | 
✔ | 
✔ | 
页面UI展示
| 类别 | 
Zipkin | 
Pinpoint | 
SkyWalking | 
CAT | 
| 健壮度 | 
** | 
***** | 
**** | 
***** | 
数据存储
| 类别 | 
Zipkin | 
Pinpoint | 
SkyWalking | 
CAT | 
| 数据存储 | 
ES,mysql,Cassandra,内存 | 
Hbase | 
ES,H2 | 
mysql,hdfs | 
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 | 
社区活跃度
| 类别 | 
Zipkin | 
Pinpoint | 
SkyWalking | 
CAT | 
| STAR | 
8.4k | 
5.9k | 
3.3k | 
4.9k | 
性能分析
摘自:https://juejin.im/post/5a7a9e0af265da4e914b46f1
模拟了三种并发用户:500,750,1000。使用jmeter测试,每个线程发送30个请求,设置思考时间为10ms。使用的采样率为1,即100%,这边与生产可能有差别。pinpoint默认的采样率为20,即50%,通过设置agent的配置文件改为100%。zipkin默认也是1。组合起来,一共有12种。下面看下汇总表:

从上表可以看出,在三种链路监控组件中,skywalking的探针对吞吐量的影响最小,zipkin的吞吐量居中。pinpoint的探针对吞吐量的影响较为明显,在500并发用户时,测试服务的吞吐量从1385降低到774,影响很大。然后再看下CPU和memory的影响,在内部服务器进行的压测,对CPU和memory的影响都差不多在10%之内。
转自:https://www.jianshu.com/p/0fbbf99a236e