1.上一编我们已经学习gateway网关统一入口了,这编我们整合sleuth+zipkin,链路追踪,方便我们快速知道一个请求的所有调用链。
2.在我们的cloud-user和cloud-product 的pom.xml 引入
<!--链路追踪 Sleuth--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
这两个的依赖包
两个配置文件都增加一下的配置
zipkin: base-url: http://localhost:9411 discovery-client-enabled: false sleuth: sampler: percentage: 1.0
最后结果类似:
spring: cloud: nacos: discovery: server-addr: localhost:8848 config: server-addr: localhost:8848 file-extension: yaml #sentinel: #transport: #dashboard: localhost:8080 #port: 8719 application: name: user zipkin: base-url: http://localhost:9411 discovery-client-enabled: false sleuth: sampler: percentage: 1.0 feign: hystrix: enabled: true ###设置feign客户端超时时间 ###SpringCloud feign 默认开启支持ribbon ribbon: ###指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。 ReadTimeout: 5000 ###指的是建立连接后从服务器读取到可用资源所用的时间。 ConnectTimeout: 5000 ###当前实例的重试次数 MaxAutoRetries: 2 ###切换实例的最大次数 MaxAutoRetriesNextServer: 1 hystrix: command: default: execution: timeout: enable: true isolation: strategy: SEMAPHORE thread: ###断路器的超时时间一定要配置,不然只要sleep 1秒就都超时了, ###而且要比ribbon 的重试次数*时间 大 timeoutInMilliseconds: 20000 logging: level: root: INFO org.springframework.web.servlet.DispatcherServlet: DEBUG org.springframework.cloud.sleuth: DEBUG
引入了依赖以后,
下载zipkin的server端,启动
java -jar zipkin-server-2.12.9-exec.jar
启动我们的服务,调用接口,
可以看到product控制台打印了,
2021-08-27 18:09:38.197 DEBUG [product,a22030d75da440c0,38bcd57bf7700eaa,true] 21780 --- [nio-8989-exec-1] o.s.web.servlet.DispatcherServlet : GET "/product/getInfo", parameters={},
user控制台打印了,
2021-08-27 18:09:40.239 DEBUG [user,a22030d75da440c0,a22030d75da440c0,true] 29816 --- [nio-8990-exec-8] o.s.web.servlet.DispatcherServlet : Completed 200 OK
可以看到他们的traceId 是一样的,spanId是不一样的,
上面的结果大概是
【微服务名称
, traceId, spanid,
是否将链路的追踪结果输出到第三方平台】
再去看看我们的
http://localhost:9411/
![](https://i-blog.csdnimg.cn/blog_migrate/f159a1df9197345a5325e60fcf402643.png)
能看到我们的请求的链路都在这里,
成功的
![](https://i-blog.csdnimg.cn/blog_migrate/a2c5a8d64b7adc6c1d263efff300a597.png)
失败的
一目了然。