SpringCloud Sleuth分佈式請求鏈路追蹤
簡介
- 在微服務架構中,一個由客戶端發起的請求子啊後端系統中會經過多個不同的服務節點調用來協同產生最後的請求結果,每一個前段請求都會形成一條複雜的分佈式服務調用鏈路,鏈路中的任何一個出現高延時的錯誤都會引起整個請求最後的失敗
github倉庫 : https://github.com/spring-cloud/spring-cloud-sleuth
官網 : https://cloud.spring.io/spring-cloud-sleuth/reference/html/
鏈路追蹤底層使用的Zipkin 但是最新的F版不需要構建自己的Zipkin Server了 ,只需要調用 jar包就好
下載jar包:http://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
下載完後,終端jar包的目錄裡,然後輸入:java -jar zipkin-server-2.12.9-exec.jar運行。
原理
服務提供者cloud-provider-payment8001
- pom添加
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
- yml
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1 #採樣率值介於0到1之間,1則表示全部採集(一般不為1,不然高併發性能會有影響)
- 新建controller
@RestController
public class PaymentController {
@GetMapping("/payment/zipkin")
public String paymentZipkin(){
return "paymentZipkin...";
}
}
服務消費者cloud-consumer-order80
- 在pom中添加(和提供者一樣)
- 在yml中添加(和提供者一樣)
- 在OrderController中添加:
@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin(){
String result = restTemplate.getForObject("http://localhost:8001" + "/payment/zipkin", String.class);
return result;
}
測試
啟動 Eureka , 然後依次啟動 客戶端