APM——链路追踪框架对比


发布于 2018-01-10 / 54 阅读 / 0 评论 /
目前市面上开源的APM系统主要有CAT、Zipkin、Pinpoint、SkyWalking,大都是参考Google的Dapper实现的。

1.功能和技术方案对比

Zipkin是Twitter开源的调用链路分析工具,目前基于Spingcloud sleuth得到了广泛的应用,特点是轻量,部署简单。一个韩国团队开源的产品,运用了字节码增强技术,只需要在启动时添加启动参数即可,对代码无侵入,目前支持Java和PHP语言,底层采用HBase来存储数据,探针收集的数据粒度非常细,但性能损耗大,因其出现的时间较长,完成度也很高,应用的公司较多。

Skywalking是本土开源的基于字节码注入的调用链路分析以及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。

CAT是由国内美团点评开源的,基于Java语言开发,目前提供Java、C/C++、Node.js、Python、Go等语言的客户端,监控数据会全量统计,国内很多公司在用,例如美团点评、携程、拼多多等,CAT跟下边要介绍的Zipkin都需要在应用程序中埋点,对代码侵入性强。

方案对比如下表所示。

项目

CAT

Zipkin

SkyWalking

调用链可视化

聚合报表

非常丰富

较丰富

服务依赖图

简单

简单

埋点方式

侵入式

侵入式

非侵入,字节码增强

VM监控指标

支持语言

java/.net

丰富

java/.net/Ndejs/php/go

存储机制

报表存储在mysql;调用链数据存储在本地文件或HDFS

内存、es、mysql等

H2、es

社区支持

主要在国内

国外主流

Apache支持

使用案例

美团、携程、陆金所

京东、阿里定制后不开源

华为、小米、当当、微众

APM

2.性能对比

以下是在网上搜索到的数据。

模拟了三种并发用户,500,750,1000,使用JMeter测试,每个线程发送30个请求,设置间隔时间为10ms,使用采用频率为1,即100%。下面是性能测试报告:

从上表可以看出,在三种链路监控组件中,skywalking探针对吞吐量影响最小,zipkin对吞吐量影响适中,pinpoint的探针对吞吐量影响最大。对于内存和cpu的使用,都差不多,相差在10%之内。