Tracing是什么
Tracing系统就是能记录追踪一个完整的调用链的系统,概念和规范有一个opentracing
比较出名,定义了什么是Trace,以及Span的概念,以及调用链上不同Span之间的关系的概念。
当我们需要引入
分布式跟踪系统
支持的时候,Spring Cloud生态里一般开源的默认选型都是Sleuth + Zipkin
Sleuth 和 Zipkin是什么
Spring Cloud Sleuth
是SpringCloud提供的分布式跟踪的解决方案,实际上就是他只是选择了一个合适的开源类库集成进来,也就是默认是Zipkin,它本身并不是分布式跟踪的完整实现,说白了他只是一个集成 "SpringCloud" 和 "Tracing implemention"一个中间人
Zipkin
是分布式跟踪系统的一个实现,有客户端brave类库,也有服务端收集&存储,Tracing类系统实现有很多比如drapper、pinpoint、skywalking、jaeger以及各种apm
其他
分布式跟踪大概的思路就是:客户端段代码埋点上报,服务端收集存储以及提供专门的后台UI展示查询,很多分布式跟踪的实现都会参考opentracing,有了规范就可以统一概念和设计思想,也提供了各个语言对应的规范实现的client类库,有了这套统一的opentracing api,就等于有了一个trace facade一样,更换新的tracing实现对客户端代码影响较小,但是实际上由于Tracing这玩意特殊了些,基本都是侵入性相对较低的,对开发是透明的,基本很少有手动埋点的需求,不过有手动编写客户端Tracing代码的时候,这个facade的意义就比较重要了
YY那么多,还是建议看下sleuth、zipkin相关源码,更好地理解目前主流开源的框架如何设计,如何集成以及各个配置项的含义