论文地址 中文翻译地址
Annotation: 注解,用来记录请求特定事件相关信息(例如时间),通常包含四个注解信息 cs - Client Start,表示客户端发起请求 sr - Server Receive,表示服务端收到请求 ss - Server Send,表示服务端完成处理,并将结果发送给客户端 cr - Client Received,表示客户端获取到服务端返回信息
由cs、cr、sr和ss事件的时间,可以得出很多时间数据,例如: 请求总耗时 = Gateway.cr - Gateway.cs ①的网络耗时 = Service1.sr - Gateway.cs Service1的调用Service2的耗时 = Service1.cr - Service1.cs (图4中Service1节点上的第二个span中的cr和cs) Service1的调用Service3的耗时 = Service1.cr - Service1.cs (图4中Service1节点上的第三个span中的cr和cs) ④的网络耗时 = Service3.sr - Service1.cs (图4中Service1节点上的第三个span中的cs) 可以这样说,如果采集到这些span,几乎所有阶段的耗时都可以计算出来。
分布式跟踪系统(一):Zipkin的背景和设计 分布式跟踪系统(二):Zipkin的Span模型 看完这两篇文章,再浏览下zipkin的代码,基本上就清楚了。
Spring Cloud Sleuth封装了zipkin,提供了spring boot风格的使用方式。 spring-cloud-sleuth-core:二次封装zipkin基于dapper的接口,instrument模块提供了目前spring 生态中常用的需要trace的组件,比如async,schedule,zuul,feign,springmvc的controller,message消息中间件等;
spring cloud sleuth 是把第一个span的id当作traceid的
@SpanName @ContinueSpan @NewSpan @SpanTag NewSpan+SpanTag创建一个新的子span,并在此span上添加tag
AlwaysSampler、NeverSampler、IsTracingSampler、PercentageBasedSampler