18. SpringCloudAlibaba 实践笔记:Sleuth介绍
Sleuth 是 SpringCloud 中提供的一个分布式链路追踪组件,在设计上大量参考并借用了 Google Dapper 的设计。
Sleuth 的主要功能
- 分布式追踪:Sleuth 为每个请求生成一个唯一的追踪 ID(Trace ID),并在请求经过的每个服务中传递这个 ID。这样可以在整个微服务架构中追踪请求的流动。
- 日志关联:Sleuth 会自动将追踪 ID 和跨度 ID(Span ID)添加到日志中,使得在查看日志时,可以很容易地找到与特定请求相关的所有日志条目。
Span 介绍
- Span 是一个基本的工作单元,表示一个操作的执行过程。它是分布式跟踪中时间跨度的一个区间,通常对应于发送一个请求、调用一个服务等具体的操作。
- 每个 Span 有一个唯一的 Span ID,同时还会记录操作的开始时间、结束时间、标签(也称为注解)等信息。
- 通过SpanId标记的开始时间戳和结束时间戳,就能够统计到当前Span的调用时间,也就是当前微服务的执行时间。另外,也可以用过Span获取到事件的名称,请求的信息等数据。
Trace 介绍
- Trace 的粒度比 Span 的粒度大,Trace 主要是由具有一组相同的 Trace ID 的 Span 组成的,从请求进入分布式系统入口经过调用各个微服务直到返回的整个过程,都是一个 Trace。
- 当请求到达分布式系统的入口时,Sleuth 会为请求创建一个唯一标识,这个唯一标识就是 Trace Id,不管这个请求在分布式系统中如何流转,也不管这个请求在分布式系统中调用了多少个微服务,这个 Trace Id 都是不变的,直到整个请求返回。
Annotation 介绍
Annotation记录了一段时间内的事件,内部使用的重要注解如下所示。
- cs(Client Send)客户端发出请求,标记整个请求的开始时间。
- sr(Server Received)服务端收到请求开始进行处理,通过sr与cs可以计算网络的延迟时间,例如:sr- cs = 网络延迟(服务调用的时间)。
- ss(Server Send)服务端处理完毕准备将结果返回给客户端, 通过ss与sr可以计算服务器上的请求处理时间,例如:ss - sr = 服务器上的请求处理时间。
- cr(Client Reveived)客户端收到服务端的响应,请求结束。通过cr与cs可以计算请求的总时间,例如:cr - cs = 请求的总时间。
Sleuth 工作流程
Sleuth 是 SpringCloud 中提供的一个分布式链路追踪组件,在设计上大量参考并借用了 Google Dapper 的设计。
Sleuth 的主要功能
- 分布式追踪:Sleuth 为每个请求生成一个唯一的追踪 ID(Trace ID),并在请求经过的每个服务中传递这个 ID。这样可以在整个微服务架构中追踪请求的流动。
- 日志关联:Sleuth 会自动将追踪 ID 和跨度 ID(Span ID)添加到日志中,使得在查看日志时,可以很容易地找到与特定请求相关的所有日志条目。
Span 介绍
- Span 是一个基本的工作单元,表示一个操作的执行过程。它是分布式跟踪中时间跨度的一个区间,通常对应于发送一个请求、调用一个服务等具体的操作。
- 每个 Span 有一个唯一的 Span ID,同时还会记录操作的开始时间、结束时间、标签(也称为注解)等信息。
- 通过SpanId标记的开始时间戳和结束时间戳,就能够统计到当前Span的调用时间,也就是当前微服务的执行时间。另外,也可以用过Span获取到事件的名称,请求的信息等数据。
Trace 介绍
- Trace 的粒度比 Span 的粒度大,Trace 主要是由具有一组相同的 Trace ID 的 Span 组成的,从请求进入分布式系统入口经过调用各个微服务直到返回的整个过程,都是一个 Trace。
- 当请求到达分布式系统的入口时,Sleuth 会为请求创建一个唯一标识,这个唯一标识就是 Trace Id,不管这个请求在分布式系统中如何流转,也不管这个请求在分布式系统中调用了多少个微服务,这个 Trace Id 都是不变的,直到整个请求返回。
Annotation 介绍
Annotation记录了一段时间内的事件,内部使用的重要注解如下所示。
- cs(Client Send)客户端发出请求,标记整个请求的开始时间。
- sr(Server Received)服务端收到请求开始进行处理,通过sr与cs可以计算网络的延迟时间,例如:sr- cs = 网络延迟(服务调用的时间)。
- ss(Server Send)服务端处理完毕准备将结果返回给客户端, 通过ss与sr可以计算服务器上的请求处理时间,例如:ss - sr = 服务器上的请求处理时间。
- cr(Client Reveived)客户端收到服务端的响应,请求结束。通过cr与cs可以计算请求的总时间,例如:cr - cs = 请求的总时间。
Sleuth 工作流程

- 请求开始:当一个请求到达一个 Sleuth 代理的应用时,Sleuth 会为其分配一个 Trace ID 和一个 Span ID。Trace ID 贯穿整个调用链,而 Span ID 则是在每一个操作开始时生成。
- 传播上下文:在请求被发送到其他服务时,Trace ID 和 Span ID 会通过请求头(通常是 HTTP headers)进行传播。这样,接收方可以知道请求的上下文并进行关联。
- 记录信息:每个 Span 会记录其开始和结束时间、执行操作的名称、一些关键事件和错误信息。这些数据可以用于分析应用性能、追踪请求路径以及故障排查。
- 结束追踪:当请求处理完毕后,所有的 Span 都会被关闭,相关信息会被发送到追踪系统(如 Zipkin)进行存储和分析。
- 请求开始:当一个请求到达一个 Sleuth 代理的应用时,Sleuth 会为其分配一个 Trace ID 和一个 Span ID。Trace ID 贯穿整个调用链,而 Span ID 则是在每一个操作开始时生成。
- 传播上下文:在请求被发送到其他服务时,Trace ID 和 Span ID 会通过请求头(通常是 HTTP headers)进行传播。这样,接收方可以知道请求的上下文并进行关联。
- 记录信息:每个 Span 会记录其开始和结束时间、执行操作的名称、一些关键事件和错误信息。这些数据可以用于分析应用性能、追踪请求路径以及故障排查。
- 结束追踪:当请求处理完毕后,所有的 Span 都会被关闭,相关信息会被发送到追踪系统(如 Zipkin)进行存储和分析。

浙公网安备 33010602011771号