一、概述
在微服務框架中,一個客戶端發起的請求在後端系統中會經過多個不同的服務節點調用來協同產生最後的請求結果,每一個前端請求都會形成一條複雜的分佈式服務調用鏈路,鏈路中的任何一環出現高延時或錯誤都會引起整個請求最後的失敗。SpringCloud Sleuth 提供了一套完整的服務跟蹤的解決方案,在分佈式系統中提供追蹤解決方案並且兼容支持了zipkin 。官方文檔地址:https://cloud.spring.io/spring-cloud-static/spring-cloud-sleuth/2.2.2.RELEASE/reference/html/ 。一條鏈路通過Trace Id(類似於樹結構的Span集合,表示一條調用鏈路,存在唯一標識)唯一標識,Span(表示調用鏈路來源,每個span就是一次請求信息)標識發起的請求信息,各Span通過parent id關聯起來,如下圖:
二、實現步驟
1、安裝 Zipkin
下載 Zipkin ,下載地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/ 。選擇下載 zipkin-server-2.12.9-exec.jar 。然後執行 java -jar zipkin-server-2.12.9-exec.jar 即可運行。默認端口號9411,在瀏覽器訪問,界面如下:
2、在服務中加上依賴;
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
3、修改application.yml配置文件,添加以下內容;
spring:
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1 # 採樣率值介於0~1之間,1表示全部採集
4、啓動服務,再有請求之後,會在Zipkin的界面上看到以下內容。
案例代碼地址:https://github.com/xhanglog/springcloud-learning