前言
在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用协同产生最后的请求结果, 每一个前端请求都会形成一个复杂的分布式服务调用链路,链路中的任何一环出来高延时或者错误都会引起整个请求最后的失败
SpringCloud Sleuth 提供了一套完整的服务跟踪的解决方案
在分布式系统中提供追踪解决方案并且兼容支持了 zipkin
一、安装 zipkin-server
1.1 下载
下载 2.12.9 版本的 zipkin
通过 cmd 运行 java -jar zipkin-server-2.12.9-exec.jar
控制台打印
可以看到 zipkin 默认使用的是 9411 端口。 访问 http://localhost:9411/zipkin
1.2 流程图
Span Id
表示当前服务, ParentId
为上一层 服务
Trace
类似于树结构的 Span 集合, 表示一条调用链路 , 存在唯一标识
span
表示调用链路来源, 通俗的理解就是 span 就是一次请求信息
二、使用步骤
2.1 直接修改之前的模块 sgg-consumer80
引入依赖
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
修改 yml 文件
server:
port: 80
spring:
application:
name: ssg-consumer-service
zipkin:
base-url: http://127.0.0.1:9411 # 指定 zipkin 的服务地址
sleuth:
sampler:
probability: 1 # 采样率, 介于 0 - 1 之间。 0 不采集, 1 全部采集
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:7001/eureka,http://localhost:7002/eureka
instance:
instance-id: sgg-consumer80
prefer-ip-address: true
修改sgg-payment8001
和 sgg-payment8002
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
修改 yml 文件
spring:
application:
name: sgg-payment-service
zipkin:
base-url: http://127.0.0.1:9411 # 配置 zipkin 的地址
sleuth:
sampler:
probability: 1 # # 采样率, 介于 0 - 1 之间。 0 不采集, 1 全部采集
接口依旧使用之前的老接口。 顺序启动 7001,7002,8001,8002,80
访问 接口
这个时候查看我们的 Zipkin 的控制台
可以看到我们的请求链路已经添加到 控制台中了
点进去 ,我们点击该链路数据,可以看到一个 Trace 明细。如下图所示:
再之后,点击两个Span,可以看到每一个的Span明细
总结 感谢B站尚硅谷的老师 ~~~
参考文章 : 芋道源码