Spring Cloud - Sleuth链路追踪
0. 概述
① sleuth要解决的问题:
在微服务框架中,一个客户端的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一个复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最终的失败。SpringCloud Sleuth提供了一套完整的服务追踪的解决方案。
② sleuth的配置:
下载jar包:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/2.12.9/
运行jar包:java -jar zipkin-server-2.12.9-exec.jar
访问web页面: 默认zipkin监听的端口是9411,localhost:9411/zipkin/
1. Sleuth使用案例
不需要额外创建项目,使用之前的8001和order的80即可
先修改8001模块:
① 在8001的pom文件中引入坐标依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
② 修改8001的yml文件:
spring:
# 服务名称,这个和payment8001不一样,这个名字就是存入服务注册中心的名字
application:
name: cloud-order-service
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1
③ 在paymentController中添加一个方法:
@GetMapping("/payment/zipkin")
public String paymentZipkin() {
return "this is zipkin feedback";
}
再修改80模块,pom文件和yml文件和8001的修改方式相同,在controller类中添加一个映射:
@GetMapping(value = "/consumer/payment/zipkin")
public String paymentZipkin() {
return restTemplate.getForObject(PAYMENT_URL + "/payment/zipkin/", String.class);
}
④ 测试:启动7001、8001、80、9411
浏览器访问:http://localhost/consumer/payment/zipkin
浏览器访问:http://localhost:9411/zipkin/