12.SpringCloud Sleuth (分散式請求鏈路追蹤)
阿新 • • 發佈:2021-01-02
1.概述
為什麼會出現這個技術?需要解決哪些問題?是什麼- https://github.com/spring-cloud/spring-cloud-sleuth
- Spring Cloud Sleuth提供了一套完整的服務跟蹤的解決方案
- 在分散式系統中提供追蹤解決方案並且相容支援了zipkin
解決
2.搭建鏈路監控步驟
zipkin
下載
SpringCloud從F版起已不需要自己構建Zipkin server了,只需要呼叫jar包即可https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/ zipkin-server-2.12.9.exec.jar啟動jarjava -jar zipkin-server-2.12.9-exec.jar
執行控制檯
http://localhost:9411/zipkin/完整的呼叫鏈路上圖what
名詞解釋
- Trace:類似於樹結構的Span集合,表示一條呼叫鏈路,存在唯一標識
- span:表示呼叫鏈路來源,通俗的理解span就是一次請求資訊
服務提供者
改造cloud-provider-payment8001pomyml<!--包含了sleuth+zipkin--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
修改業務類PaymentControllerserver: port: 8001 spring: application: name: cloud-payment-service zipkin: #zipkin的配置 base-url: http://localhost:9411 #註冊到sleuth的服務端地址 sleuth: sampler: probability: 1 datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: org.gjt.mm.mysql.Driver url: jdbc:mysql://localhost:3306/springcloud2020?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: 123456 mybatis: mapperLocations: classpath:mapper/*/*.xml type-aliases-package: com.chl.springcloud.entity #eureka eureka: client: register-with-eureka: true #註冊中心註冊自己 fetchRegistry: true #去服務中心拉去服務列表需要去檢索服務 service-url: #單機版的註冊 eureka的服務中心註冊地址 defaultZone: http://eureka7001.com:7001/eureka
/**
* 測試sleuth的鏈路追蹤
* @return
*/
@GetMapping("/payment/zipkin")
public String paymentZipkin() {
return "hi ,i'am paymentzipkin server fall back,welcome to atguigu,O(∩_∩)O哈哈~";
}
服務消費者(呼叫方)
修改cloud-consumer-order80pom<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
ymlserver:
port: 80
spring:
application:
name: cloud-order-service
zipkin:
base-url: http://localhost:9411 #註冊到sleuth的服務端地址
sleuth:
sampler:
probability: 1
eureka:
client:
register-with-eureka: true
fetchRegistry: true
service-url:
defaultZone: http://localhost:7001/eureka
修改業務類OrderController//測試sleuth鏈路追蹤
// ====================> zipkin+sleuth
@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin() {
String result = restTemplate.getForObject("http://localhost:8001"+"/payment/zipkin/", String.class);
return result;
}
測試
依次啟動eureka7001/8001/8080呼叫8001幾次測試下開啟瀏覽器訪問 http://localhost:9411 會出現以下介面