在微服务架构中,如果某一请求耗时非常严重,我们需要追踪到哪一块代码出现的耗时严重的问题,传统的做法是在调用其他服务的地方做请求耗时记录,如果耗时大则告知该微服务负责人优化代码,有时该微服务也会调用其他微服务,这些散落的公共代码不便维护,也很难定位问题,我们引入SpringCloudSleuth来进行分布式的服务追踪.去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样,从而达到每个请求的步骤清晰可见,
1.引入依赖
2.概念介绍
- TraceId : 一个请求,一条链路里面最多包含一个traceId,traceId就是一条链路的唯一标识
- spanId : 一个基本单元,一条链路里面会包含多个spanId,发送一个远程任务调用就会产生一个spanId,是一个64位Id唯一标识
- 最后一个值true/false : true表示要把这个信息输出到外部服务来收集和展示,false则相反
3.界面化
使用Zipkin工具,查看官方文档,采用Docker的方式,访问http://ip:9411/zipkin
docker run -d -p 9411:9411 openzipkin/zipkin
添加依赖
spring-cloud-starter-zipkin包含zipkin和sleuth
在配置文件中添加
spring.zipkin.base_url :界面地址
spring.sleuth.sampler.percentage: 1 开发环境发送所有