背景
项目微服务化后,应用服务依赖越来越多,不同于以往单体架构的简单直连,一个请求往往需要多个模块共同协作处理,不同模块可能还依赖于不同的外部存储,各个模块的实现技术还不尽相同,一个请求是如何在整个系统不同模块间进行流转,整个调用链上的各个模块之间的调用关系如何,每个微服务处理的时间长短,处理的结果是否正确,很难去进行追踪,而这些信息对于整个系统运维、性能分析、故障追踪都特别有帮助,也正因为此,才有了各种分布式链路追踪的技术。
常见开源产品
cat, zipkin, pinpoint , skywalking
比较:(摘自网络)
cat | zipkin | pinpoint | skywalking | |
---|---|---|---|---|
依赖 | Java 6,7,8Maven 3.2.3+mysql5.6Linux 2.6以及之上(2.6内核才可以支持epoll) | Java 6,7,8Maven3.2+rabbitMQ | Java 6,7,8maven3+Hbase0.94+ | Java 6,7,8maven3.0+nodejs zookeeper/nacos+elasticsearch |
实现方式 | 代码埋点(拦截器,注解,过滤器等) | 拦截请求,发送(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) |
缺点 | 代码侵入性较强,需要埋点文档比较混乱,文档与发布版本的符合性较低,需要依赖点评私服 (或者需要把他私服上的jar手动下载下来,然后上传到我们的私服上去)。 | 默认使用的是http请求向zipkin上报信息,耗性能。跟sleuth结合可以使用rabbitMQ的方式异步来做,增加了复杂度,需要引入rabbitMQ 。数据分析比较简单。 | 不支持查询单个调用链, 对外表现的是整个应用的调用生态。二次开发难度较高 | 3.2版本之前BUG较多 ,网上反映兼容性较差 . 3.2新版本的反映情况较少依赖较多。 |
文档 | 网上资料较少,仅官网提供的文档,比较乱 | 文档完善 | 文档完善 | 文档完善 |
开发者 | 大众点评 | naver | 吴晟(华为开发者) ,目前已经加入Apache孵化器 | |
使用公司 | 大众点评, 携程, 陆金所,同程旅游,猎聘网 | naver | 华为软件开发云、天源迪科、当当网、京东金融 | |
性能测试报告(摘自网络)
模拟了三种并发用户:500,750,1000。使用jmeter测试,每个线程发送30个请求,设置思考时间为10ms。使用的采样率为1,即100%
- 本文标题: 分布式链路选型对比
- 文章作者: sherryriver(木木三可)
- 发布时间: 2021.09.01
- 本文链接: https://sherryriver.github.io/2021/09/01/分布式链路选型对比/
- 许可协议: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。