1. 程式人生 > 其它 >Spring Cloud的鏈路追蹤(Sleuth + Zipkin)

Spring Cloud的鏈路追蹤(Sleuth + Zipkin)

​ 微服務架構中,系統間呼叫往往會出現延遲與異常等情況,因此,鏈路追蹤工具已經是必不可少的元件,Spring Cloud中集成了這樣的元件,那就是Sleuth + Zipkin。

Spring Cloud Sleuth + Zipkin

使用方式

pom.xml檔案中引入依賴

<!--包含sleuth和zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

基本術語

Spring Cloud Sleuth採用的是Google的開源專案Dapper的專業術語。

  • Span:基本工作單元,傳送一個遠端排程任務 就會產生一個Span,Span是一個64位ID唯一標識的,Trace是用另一個64位ID唯一標識的,Span還有其他資料資訊,比如摘要、時間戳事件、Span的ID、以及進度ID。
  • Trace:一系列Span組成的一個樹狀結構。請求一個微服務系統的API介面,這個API介面,需要呼叫多個微服務,呼叫每個微服務都會產生一個新的Span,所有由這個請求產生的Span組成了這個Trace。
  • Annotation:用來及時記錄一個事件的,一些核心註解用來定義一個請求的開始和結束 。這些註解包括以下:
  • cs - Client Sent -客戶端傳送一個請求,這個註解描述了這個Span的開始
  • sr - Server Received -服務端獲得請求並準備開始處理它,如果將其sr減去cs時間戳便可得到網路傳輸的時間。
  • ss - Server Sent (服務端傳送響應)–該註解表明請求處理的完成(當請求返回客戶端),如果ss的時間戳減去sr時間戳,就可以得到伺服器請求的時間。
  • cr - Client Received (客戶端接收響應)-此時Span的結束,如果cr的時間戳減去cs時間戳便可以得到整個請求所消耗的時間。

Zipkin的安裝

官網:https://zipkin.io/

組織架構圖

Docker

docker run -d -p 9411:9411 openzipkin/zipkin

Java

curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar

Running from Source

# get the latest source
git clone https://github.com/openzipkin/zipkin
cd zipkin
# Build the server and also make its dependencies
./mvnw -DskipTests --also-make -pl zipkin-server clean install
# Run the server
java -jar ./zipkin-server/target/zipkin-server-*exec.jar

安裝完成後

配置檔案中加入配置,將資料匯入Zipkin

spring:
application:
name: order
zipkin:
base-url: http://zipkin:9411/
sender:
type: web
sleuth:
sampler:
#抽樣百分比,預設10%的資料發到zipkin,1為100%
probability: 1