Spring Cloud Sleuth
Spring Cloud Sleuth为Spring Cloud实现了分布式链路跟踪解决方案。也引入了Google论文 Dapper 中的术语。
Span:基本工作单元,例如,发送RPC是一个新的span,就像向RPC发送响应一样,Span由span的唯一64位ID标识,另一个64位ID标识其所属的Trace。Span还有其他数据,例如描述、带时间戳的事件、键值annotations(标签),导致它们的span的ID以及进程ID(通常是IP地址)。
span可以启动和停止,它们可以跟踪自己的时间信息,创建span后,必须在将来的某个时刻停止它。
启动Trace的初始span称为 root span
,该span的ID值等于trace ID。
Trace:一组span形成的树状结构,例如,如果运行分布式大数据存储,则可能由 PUT
请求形成trace。
Annotation:用于及时记录事件的存在,使用 Brave 工具,不再需要为 Zipkin 设置特殊的事件来了解客户端和 服务器 是谁、请求在哪里开始以及在哪里结束,然而,出于学习目的,标记这些事件以突出发生了什么类型的操作。
- cs :Client Sent,客户端发起了一个请求,这个annotation表示span的开始。
- sr :Server Received,服务器端获得了请求并开始处理它,从此时间戳中减去
cs
时间戳会显示网络延迟。 - ss :Server Sent,在请求处理完成时注释(当响应被发送回客户端时),从此时间戳中减去
sr
时间戳会显示服务器端处理请求所需的时间。 - cr :Client Received,表示span的结束,客户端已成功从服务器端收到响应,从此时间戳中减去
cs
时间戳会显示客户端从服务器接收响应所需的全部时间。
下图显示了系统中的 Span 和 Trace ,以及Zipkin annotations:
标记的每种颜色表示一个span(有七个span — 从 A 到 G ),请考虑以下标记:
Trace Id = X Span Id = D Client Sent
此标记表示当前span的 Trace Id 设置为 X , Span Id 设置为 D ,此外,还发生了 Client Sent
事件。
下图显示了span的父—子关系:
实际项目中若已引入Spring Could sleuth包,则默认会在打印日志时输出traceId、spanId等内容,若它调用一个也是用Spring Could sleuth的服务,则会自动传递traceId
类似这种traceId的传递操作,在服务内多采用ThreadLocal或MDC的方式,在分布式微服务时一般在request header或url参数中传递。
相关文章
- Spring基础-04(Spring01-04:IOC)
- spring cloud: Hystrix(七):Hystrix的断容器监控dashboard
- Spring依赖注入原理分析
- Spring Boot 2.x 系列教程:WebFlux REST API 全局异常处理 Error Handling
- spring源码分析之定时任务Scheduled注解
- spring-boot 加载本地静态资源文件路径配置
- Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵进阶实战
- Spring 声明式事务
- Spring data elasticsearch的使用
- Spring Cloud Alibaba基础教程:@SentinelResource注解实现限流控制与熔断降级使用详解
- Hibernate整合spring配置二级缓存
- 6步带你用Spring Boot开发出商城高并发秒杀系统
- 谁说微服务是Spring Cloud的独角戏?Service Mesh了解一下?
- Spring的@ExceptionHandler注解使用方法
- spring cloud Zuul 多层拦截 --- 心得
- 【SFA官方翻译】Spring WebFlux和Spring Cloud进行响应式微服务开发
- 010-spring cloud gateway-过滤器-自定义局部、全局过滤器、区别
- 002-Spring Cloud 功能简介
- 005-spring cache-原理、缓存AOP机制、Spring Cache抽象集成机制、springboot自动配置机制
- 服务降级是什么?Spring Cloud如何实现?
- [spring学习] 1、spring下载与使用
- Spring Cloud Gateway限流详解