分布式请求链路跟踪 Springcloud Sleuth
- 为什么出现这个技术
当微服务的调用链路变长的时候,就需要一个链路监控
SpringCloud Sleuth提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了zipkin.
Sleuth 负责收集整理, zipkin负责展现
2. 开始搭建zipkin
2.1 下载
SpringCloud 从F版起已不需要自己构建Zipkin Server了,只需调用jar包即可
https://repo1.maven.org/maven2/io/zipkin/zipkin-server/
https://repo1.maven.org/maven2/io/zipkin/zipkin-server/2.23.8/zipkin-server-2.23.8-exec.jar
2.2 安装启动
java -jar D:\EclipseWorkspace\zipkin\zipkin-server-2.23.8-exec.jar
2.3 服务ui
http://localhost:9411/zipkin/
2.4 完整的调用链路
3. 搭建
server: 7001/ 7002
provider: 8001 / 8002
consumer: 808
3.1 provider and consumer
pom 和 yaml 添加相同的配置, controller有所不同
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
spring:
zipkin:
base-url: http://localhost:9411
sender:
type: web # zipkin UI端显示内容
sleuth:
sampler:
# 采样率介于0到1之间,1表示全部采集
probability: 0.1
Payment Controller in 8001 and 8002
@GetMapping("/payment/zipkin")
public String getPaymentZipkin(){
return "zipkin server fallback.....serverPort:"+serverPort;
}
Consumer Controller in 808
@GetMapping("/consumer/payment/zipkin")
public String getPaymentZipkin(){ // http://localhost:8001
String result = restTemplate.getForObject(payment_url+"/payment/zipkin",String.class);
return result;
}
结果: