spring-cloud-sleuth 和 分布式链路跟踪系统

时间:2021-07-26 06:54:37

==================
spring-cloud-sleuth
==================
spring-cloud-sleuth 可以用来增强 log 的跟踪识别能力, 经常在微服务架构中被引入, 但其实在单体应用中也很重要, 比如多线程操作/定时任务/复杂的web请求, 都需要很容易地区分纳几行log日志属于一组操作.

未引入分布式链路跟踪系统之前的两个使用案例, 展现如何在log日志中增加了traceid信息.
https://www.baeldung.com/spring-cloud-sleuth-single-application
https://reflectoring.io/tracing-with-spring-cloud-sleuth/

==================
分布式链路跟踪系统
==================
pinpoint
stars: 8000+
https://github.com/naver/pinpoint
存储: HBase
客户端支持语言: Java/PHP
UI: 非常好
社区活跃度: 比较活跃
代码侵入性: 基本无侵入

zipkin
stars: 10000+
https://github.com/openzipkin/zipkin/
存储: 插件式存储设计, 支持Cassandra, 也支持 ES 和 MySQL, 也有其他社区开发的存储插件.
客户端支持语言: Java/C#/Go/Python/PHP, 支持的语言非常全.
UI: 一般
社区活跃度: 非常活跃. zipkin 架构扩展性非常好, spring-cloud-sleuth 官方默认采用zipkin 作为distributed tracing server.
代码侵入性: 一边情况下需要手工埋点

cat:
stars: 8000+
https://github.com/dianping/cat
存储: 规模较小可以直接写本地磁盘, 规模较大推荐使用HDFS存储
客户端支持语言: Java/C/C++/Node.js/Python/Go, 官方还没有发布C#客户端, 携程有一个C#客户端(貌似是老版本)
UI: 一般
社区活跃度: 美团点评主导开发, 在国内用的较多, 但基本上都是拿来主义.
代码侵入性: 需要手工埋点

Spring Cloud(十二):分布式链路跟踪 Sleuth 与 Zipkin【Finchley 版】
https://windmt.com/2018/04/24/spring-cloud-12-sleuth-zipkin/

回到网易后开源 APM 技术选型与实战
https://www.infoq.cn/article/apm-Pinpoint-practice

关于选型, 我推荐使用 zipkin, 社区支持度最好, 同时集群搭建和运维也更友好, 尤其是可以使用ES作为后台存储, 对于一般团队ELK本身就是必须的, 即使不用ES, 使用Cassandra作存储, 比HBase要简单很多.