一、简介
sleuth收集跟踪信息通过http请求发送给zipkin server,zipkin将跟踪信息存储,以及提供RESTful API接口,zipkin ui通过调用api进行数据展示。默认内存存储,可以用mysql,ES等存储。
二、Sleuth
Sleuth是Spring cloud的分布式跟踪解决方案。
概念
span(跨度),基本工作单元。一次链路调用,创建一个span,
span用一个64位id唯一标识。包括:id,描述,时间戳事件,spanId,span父id。
span被启动和停止时,记录了时间信息,初始化span叫:root span,它的span id和trace id相等。
trace(跟踪),一组共享“root span”的span组成的树状结构 称为 trace,trace也有一个64位ID,trace中所有span共享一个trace id。类似于一颗 span 树。
annotation(标签),annotation用来记录事件的存在,其中,核心annotation用来定义请求的开始和结束。
- CS(Client Send客户端发起请求)。客户端发起请求描述了span开始。
- SR(Server Received服务端接到请求)。服务端获得请求并准备处理它。SR-CS=网络延迟。
- SS(Server Send服务器端处理完成,并将结果发送给客户端)。表示服务器完成请求处理,响应客户端时。SS-SR=服务器处理请求的时间。
- CR(Client Received 客户端接受服务端信息)。span结束的标识。客户端接收到服务器的响应。CR-CS=客户端发出请求到服务器响应的总时间。
taceId标识是同一条链路
spanId标识是一个服务的一次请求
parentId将当前请求与上一请求串联,被调用方的parentId是调用方的spanId
三、zipkin
zipkin是twitter开源的分布式跟踪系统
下载最新的稳定版本
1 | https://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=LATEST&c=exec |
命令下载
1 | curl -sSL https://zipkin.io/quickstart.sh | bash -s |
启动
1 | java -jar zipkin-server-2.22.2-exec.jar |
四、客户端配置
依赖
1 | <!--链路追踪--> |
yml配置
1 | spring: |
五、服务调用
通过user服务调用pay服务
调用情况:
调用详情:
依赖情况: