首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如果把 7 个「链路追踪」组件放到一个群里,他们会聊些什么?

如果把 7 个「链路追踪」组件放到一个群里,他们会聊些什么?

作者头像
悟空聊架构
发布2022-05-13 16:41:40
发布2022-05-13 16:41:40
5560
举报

大家好,我是悟空呀~

中间件的聊天记录第二弹来袭了,想看第一弹的在这里:如果把四个消息队列都拉到一个群里,他们会聊些什么

本篇我会从 7 大分布式链路追踪组件的历史背景、技术选型对比、使用经验、性能等多个方面来进行总结分享,相信会给大家带来一些启发。

分布式链路追踪概念:运行时通过某种方式记录下各服务之间的调用过程,再通过可视化 UI 方式帮助相关人员快速定位到故障点。分布式链路追踪已经成为微服务架构性能监控的底层基础设施,必须学它一波。

关于链路追踪的原理可以看我之前写的一篇:在医院五天,我把「链路追踪」整明白了

好了,我们来看下他们的聊天记录:

发展史

CAL 和 CAT 傻傻分不清

涉及的故事

链路追踪组件发展史

eBay 2002 年,业务快速增长,流量猛增,非常需要一款链路监控工具,CAL 应运而生,被称作 eBay 的三大神器之一。CAL 全称:Centralized Application Logging

老吴从 eBay 跳槽到大众点评后,主导研发了 CAT,2011 年诞生。所以 CAT 和 CAL 有很多相似的地方。CAT 在国内很早就开源了,采用 Java 语言编写,社区也比较活跃。CAT 全称:Centralized Application Tacking。

Dapper 的继承者

涉及的故事:

Google-Dapper:Google 公司内部有一款链路追踪组件 Dapper,非常强大,但是没有开源。在 2010 年,Google 发表了一篇 Dapper 的论文,介绍了 Dapper 链路追踪的原理,后来成为多家链路追踪组件的鼻祖。

Twitter-ZipKin:米国的 Twitter 公司大家应该知道吧,类似于我们的新浪微博,而 Zipkin 就是他们的链路追踪产品,在 2012 年早期开源,基于 Dapper 论文开发。

Naver-PinPoint:Naver 是韩国的一家公司,聊天记录里面的打招呼 대장부 翻译过来就是“大佬好”。Pinpoint 也是基于 Dapper 论文的思想进行开发,功能丰富,2012 年开源,也是非常受欢迎的一款产品。

Uber-Jaeger:米国的 Uber 大家应该熟悉,曾经在国内的打车市场非常火爆,不过现在打车软件都是滴滴和其他平台了。Jaeger 时 Uber 公司的一款链路追踪产品,在 2016 年开源,吸收了 Zipkin 的设计思想,用的语言是 Golang,可以认为是 Zipkin 的克隆版,但是也有它自身的优点和亮点。

Apache-Skywalking:Skywalking 是国产的,Made In China,项目发起人吴晟结合了 OneAPM + PinPoint,打造的一款链路追踪组件,Skywalking 已经进入 Apache 孵化,国内社区活跃,可以进官方群,很多问题都可以第一时间得到大家的帮助。

Skywalking VS PinPoint

UI 界面

涉及的故事:

Skywalking 和 PinPoint 都是非常优秀的链路追踪组件,Skywalking 和 PinPoint 有很多相似的地方,比如都是字节码注入,不侵入的。

而 PinPoint 的界面和 ZipKin、Skywalking 比较来说,确实要略胜一筹。不过daocloud根据Pinpoint的风格为skywalking定制了一款 UI,界面也很拉风了。所以只比较原生 UI 的话,PinPoint 胜出。

社区支持

涉及的故事:

Skywalking 和 CAT:这两款链路追踪组件都是国产的,对国内用户更友好,香!另外 CAT 早期开源的,现在社区不活跃了。Skywalking 还有官方 QQ 交流群,我天,这个要吹爆!

思密达:韩语的语气助词,用在句尾,表示尊敬。PinPoint 对国内社区这一块确实有心无力,毕竟国人看汉语更方便。

优势对比

涉及的故事:

  • 性能方面

由于Pinpoint采集信息太过详细,所以,它对性能的损耗最大。而skywalking默认策略比较保守,对性能损耗很小。有网友做过压力测试,对比如下:

性能对比

RoctetMQ:聊天记录里面出现的 RocketMQ 是阿里开源的消息队列,现在交给 Apache 维护了,国内大厂用得很多。国产 yyds。

  • 组件支持:Skywalking 对组件的支持真的很全,比如对 RPC 框架的支持,消息队列的支持,Redis 客户端的支持,日志框架的支持,都要胜于 PinPoint,但是对于 WEB 容器、数据库支持方面,PinPoint 略胜一筹。

组件支持对比

  • 告警:Pinpoint和skywalking都支持常用的告警规则配置,但是skywalking采用webhooks的方式就灵活很多:短信通知,邮件通知,微信通知都是可以支持的。而Pinpoint只能sms/email通知,并且还需要引入MySQL存储,增加了整个系统复杂度。所以,告警方面,skywalking更胜一筹。
  • PinPoint 的优势:追踪数据粒度非常细、功能强大的用户界面。支持海量的日志存储。
  • PinPoint 的劣势:比较重负载的系统(运行它必须先维护一套 HBase),严重制约了它的适用范围。
  • Skywalking 的优势:非常活跃的中文社区,支持多种语言的探针,对国产开源软件支持很全面,而且性能损耗较小。二次开发也要优于 PinPoint。

ZipKin

涉及的故事:

Spring Cloud 引入 Sleuth 组件,就可以获取到调用链路,但只能通过控制台的输出信息来看,不太方便。

Zipkin 油然而生,一个图形化的工具。Zipkin 是 Twitter 开源的分布式跟踪系统,主要用来用来收集系统的时序数据,进而可以跟踪系统的调用问题。

而且引入了 Zipkin 组件后,就不需要引入 Sleuth 组件了,因为 Zipkin 组件已经帮我们引入了。

关于 Spring Cloud 整合 Zipkin 可以看我之前写的这篇:在医院五天,我把「链路追踪」整明白了

Zipkin 参照 Google Dapper 的设计理念进行开发的,所以 Dapper 才会说得感谢Dapper。

报表

涉及的故事:

ZipKin 的 APM 的报表能力比较薄弱,有报表需求的,建议选择其他链路追踪组件。APM(Application Performance Management & Monitoring) :应用性能管理和监控,主要通过对程序的性能指标进行分析和监控,来帮助开发、测试、运维人员来掌握程序的性能和运行情况。

总结

来一张几个常用分布式链路追踪组件的对比图,如有不对,请指出。

几款开源链路追踪组件对比

大家选用的是哪款分布式链路追踪组件呢?

参考资料:

http://www.passjava.cn

https://spring.io/projects/spring-cloud-sleuth

https://skywalking.apache.org/zh/2019-02-24-skywalking-pk-pinpoint

https://juejin.cn/post/6844903560732213261

https://time.geekbang.org/column/article/441338

https://www.cnblogs.com/zhangs1986/p/8879744.html

https://tech.meituan.com/2018/11/01/cat-in-depth-java-application-monitoring.html

https://www.cnblogs.com/yyhh/p/6106472.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 悟空聊架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 发展史
    • CAL 和 CAT 傻傻分不清
    • Dapper 的继承者
  • Skywalking VS PinPoint
    • UI 界面
    • 社区支持
    • 优势对比
  • ZipKin
    • 报表
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档