本篇要點
- 簡單介紹Spring Cloud Sleuth。
- 介紹zipkin環境搭建。
- 演示鏈路追蹤效果。
分佈式服務追蹤與調用鏈系統產生的背景
在微服務框架中,一個由客戶端發起的請求在後端系統中會經過多個不同的服務節點調用來協同產生最後的請求結果,每一個前端請求都會形成一條複雜的分佈式服務調用鏈路,鏈路中的任何一環出現高延時或錯誤都會引起整個請求最後的失敗。
Spring Cloud Sleuth是什麼?
Spring Cloud Sleuth爲Spring Cloud實現了一種分佈式跟蹤解決方案。
完整的調用鏈路:一條鏈路通過Trace Id唯一標識,Span標識發起的請求信息,各span通過parent id關聯起來。
Zipkin環境搭建
下載地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
運行zipkin:
$ java -jar zipkin-server-2.12.9-exec.jar
訪問:localhost:9411/zipkin/
鏈路追蹤演示
本次鏈路追蹤的演示,選擇不新建項目,選取老項目演示。
選取cloud-provider-payment8001
作爲服務的提供者,選取cloud-consumer-order80
作爲服務的消費者。
服務提供者和消費者配置
倆服務都添加配置pom.xml
<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
倆服務都添加配置yml
spring:
application:
name: cloud-payment-service # 服務名稱!
zipkin:
base-url: http://localhost:9411 # 監控中心
sleuth:
sampler:
#採樣率值介於 0 到 1 之間,1 則表示全部採集
probability: 1
服務提供者提供測試接口
@GetMapping("/payment/zipkin")
public String paymentZipkin(){
return "payment zipkin !";
}
服務消費者提供測試接口
@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin(){
return restTemplate.getForObject("http://localhost:8001" + "/payment/zipkin/",String.class);
}
測試
依次啓動7001,80,8001模塊,消費者調用測試接口,產生調用鏈路,進入zipkin管理頁面,可以觀測調用鏈路的響應情況等。
源碼下載
本系列文章爲《尚硅谷SpringCloud教程》的學習筆記【版本稍微有些不同,後續遇到bug再做相關說明】,主要做一個長期的記錄,爲以後學習的同學提供示例,代碼同步更新到Gitee:https://gitee.com/tqbx/spring-cloud-learning,並且以標籤的形式詳細區分每個步驟,這個系列文章也會同步更新。