Spring Cloud Sleuth

来源:互联网 发布:毛笔书法软件下载 编辑:程序博客网 时间:2024/06/16 21:33

Dapper

论文地址
中文翻译地址

Annotation

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的背景和设计
分布式跟踪系统(二):Zipkin的Span模型
看完这两篇文章,再浏览下zipkin的代码,基本上就清楚了。

Sleuth

概述

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

Sampler(取样器)

AlwaysSampler、NeverSampler、IsTracingSampler、PercentageBasedSampler