分布式链路追踪技术对比
常见开源产品
cat, zipkin, pinpoint , skywalking
cat
由大众点评开源,基于Java开发的实时应用监控平台,包括实时应用监控,业务监控 。 集成方案是通过
代码埋点的方式来实现监控,比如: 拦截器,注解,过滤器等。 对代码的侵入性很大,集成成本较高。
风险较大。
支持技术栈:
- dubbo
- spring mvc ,spring aop ,springmvc-url
- spring boot
- mybatis
- log4j , logback
- playframework
- http请求
zipkin
由Twitter团队开源, Zipkin是一个分布式的跟踪系统。它有助于收集数据需要解决潜在的问题在市微服架构的时机。它管理数据的收集和查找 .
该产品结合spring-cloud-sleuth使用较为简单, 集成很方便。 但是功能较简单。
支持技术栈:
- spring cloud
以上是结合spring-cloud-sleuth支持的技术栈
pinpoint
由韩国团队naver团队开源,针对大规模分布式系统用链路监控,使用java写的工具。灵感来自短小精悍,帮助分析系统的总
体结构和内部组件如何被调用在分布式应用提供了一个很好的解决方案。
使用java探针字节码增加技术,实现对整个应用的监控 。 对应用零侵入
支持技术栈:
- Tomcat 6+, Jetty 8/9, JBoss 6, Resin 4, Websphere 6+, Vertx 3.3+
- Spring, Spring Boot (Embedded Tomcat, Jetty)
- HTTP Client 3.x/4.x, HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
- Thrift, Dubbo
- mysql, oracle, mssql, cubrid,PostgreSQL, maria
- arcus, memcached, redis, cassandra
- MyBatis
- DBCP, DBCP2, HIKARICP
- gson, Jackson, Json Lib
- log4j, Logback
skywalking
2015年由个人吴晟(华为开发者)开源 , 2017年加入Apache孵化器。
针对分布式系统的应用性能监控系统,特别针对微服务、cloud native和容器化(Docker, Kubernetes, Mesos)架构, 其核心是个分布式追踪系统。
使用java探针字节码增加技术,实现对整个应用的监控 。 对应用零侵入
支持技术栈
- Tomcat7+ , resin3+, jetty
- spring boot ,spring mvc
- strtuts2
- spring RestTemplete ,spring-cloud-feign
- okhttp , httpClient
- msyql ,oracle , H2 , sharding-jdbc,PostgreSQL
- dubbo,dubbox ,motan, gRpc ,
- rocketMq , kafla
- redis, mongoDB,memcached ,
- elastic-job , Netflix Eureka , Hystric
性能分析
摘自: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%之内。
比较
cat | zipkin | pinpoint | skywalking | |
---|---|---|---|---|
依赖 |
|
|
|
|
实现方式 | 代码埋点(拦截器,注解,过滤器等) | 拦截请求,发送(HTTP,mq)数据至zipkin服务 | java探针,字节码增强 | java探针,字节码增强 |
存储选择 | mysql , hdfs | in-memory , mysql , Cassandra , Elasticsearch | HBase | elasticsearch , H2 |
通信方式 | — | http , MQ | thrift | GRPC |
MQ监控 | 不支持 | 不支持 | 不支持 | 支持(RocketMQ,kafka) |
全局调用统计 | 支持 | 不支持 | 支持 | 支持 |
trace查询 | 不支持 | 支持 | 不支持 | 支持 |
报警 | 支持 | 不支持 | 支持 | 支持 |
JVM监控 | 不支持 | 不支持 | 支持 | 支持 |
star数 | 4.5K | 7.9K | 5.6K | 2.8K |
优点 | 功能完善。 |
spring-cloud-sleuth可以很好的集成zipkin , 代码无侵入,集成非常简单 , 社区更加活跃。 对外提供有query接口,更加容易二次开发 |
完全无侵入, 仅需修改启动方式,界面完善,功能细致。 |
完全无侵入,界面完善,支持应用拓扑图及单个调用链查询。 功能比较完善(zipkin + pinpoint) |
缺点 |
|
|
|
|
文档 | 网上资料较少,仅官网提供的文档,比较乱 | 文档完善 | 文档完善 | 文档完善 |
开发者 | 大众点评 | naver |
吴晟(华为开发者) ,目前已经加入Apache孵化器 | |
使用公司 | 大众点评, 携程, 陆金所,同程旅游,猎聘网 | naver | 华为软件开发云、天源迪科、当当网、京东金融 | |