'SpringCloud 2.x之Spring Cloud 服務跟蹤總結'

"

其實Spring Cloud實施分佈式跟蹤解決方案所用的技術不僅僅是zipkin。在spring官網:

http://spring.io/projects/spring-cloud-sleuth

有這麼一段話:


"

其實Spring Cloud實施分佈式跟蹤解決方案所用的技術不僅僅是zipkin。在spring官網:

http://spring.io/projects/spring-cloud-sleuth

有這麼一段話:


SpringCloud 2.x之Spring Cloud 服務跟蹤總結



翻譯過來:

Spring Cloud Sleuth是Spring Cloud實施分佈式跟蹤解決方案,大量借用Dapper,Zipkin和HTrace。對於大多數用戶來說,偵探應該是隱形的,並且所有與外部系統的交互都應該自動進行檢測。您可以簡單地在日誌中捕獲數據,也可以將數據發送到遠程收集器服務。

Spring CloudSleuth借用了Dapper的術語:

跨度(Span):基本的工作單位。例如,發送一個RPC是一個新的跨度,就像向RPC發送響應一樣。跨度由跨度的唯一64位ID和跨度所包含的另一個 64位ID標識。Spans還具有其他數據,例如描述,時間戳事件,鍵值註釋(標記),導致它們的跨度的ID以及進程ID(通常為IP地址)。跨度啟動和停止,並跟蹤他們的時間信息。一旦你創建了一個跨度,你必須在將來某個時候停止它。開始追蹤的初始跨度被稱為 root span。該跨度的span id的值等於trace id。

痕跡(Trace):一組形成樹狀結構的跨度。例如,如果您正在運行分佈式大數據存儲,則跟蹤可能由放入請求組成。

標註(Annotation):用於及時記錄事件的存在。用於定義請求開始和結束的一些核心註釋是:

cs - 客戶端發送 - 客戶端發出請求。這個註釋描述了跨度的開始。

sr - 服務器已收到 - 服務器端收到請求並開始處理。如果從這個時間戳中減去cs時間戳,將會收到網絡延遲。

ss - 服務器發送 - 在請求處理完成時(當響應被髮送回客戶端時)註釋。如果從這個時間戳中減去sr時間戳,將會收到服務器端處理請求所需的時間。

cr - 客戶端收到 - 表示跨度結束。客戶端已經成功接收到服務器端的響應。如果從這個時間戳中減去cs時間戳,那麼將會收到客戶端接收服務器響應所需的全部時間。

SpanTrace在系統中與Zipkin Annotation一起顯示的可視化示例:

(https://github.com/spring-cloud/spring-cloud-sleuth)


"

其實Spring Cloud實施分佈式跟蹤解決方案所用的技術不僅僅是zipkin。在spring官網:

http://spring.io/projects/spring-cloud-sleuth

有這麼一段話:


SpringCloud 2.x之Spring Cloud 服務跟蹤總結



翻譯過來:

Spring Cloud Sleuth是Spring Cloud實施分佈式跟蹤解決方案,大量借用Dapper,Zipkin和HTrace。對於大多數用戶來說,偵探應該是隱形的,並且所有與外部系統的交互都應該自動進行檢測。您可以簡單地在日誌中捕獲數據,也可以將數據發送到遠程收集器服務。

Spring CloudSleuth借用了Dapper的術語:

跨度(Span):基本的工作單位。例如,發送一個RPC是一個新的跨度,就像向RPC發送響應一樣。跨度由跨度的唯一64位ID和跨度所包含的另一個 64位ID標識。Spans還具有其他數據,例如描述,時間戳事件,鍵值註釋(標記),導致它們的跨度的ID以及進程ID(通常為IP地址)。跨度啟動和停止,並跟蹤他們的時間信息。一旦你創建了一個跨度,你必須在將來某個時候停止它。開始追蹤的初始跨度被稱為 root span。該跨度的span id的值等於trace id。

痕跡(Trace):一組形成樹狀結構的跨度。例如,如果您正在運行分佈式大數據存儲,則跟蹤可能由放入請求組成。

標註(Annotation):用於及時記錄事件的存在。用於定義請求開始和結束的一些核心註釋是:

cs - 客戶端發送 - 客戶端發出請求。這個註釋描述了跨度的開始。

sr - 服務器已收到 - 服務器端收到請求並開始處理。如果從這個時間戳中減去cs時間戳,將會收到網絡延遲。

ss - 服務器發送 - 在請求處理完成時(當響應被髮送回客戶端時)註釋。如果從這個時間戳中減去sr時間戳,將會收到服務器端處理請求所需的時間。

cr - 客戶端收到 - 表示跨度結束。客戶端已經成功接收到服務器端的響應。如果從這個時間戳中減去cs時間戳,那麼將會收到客戶端接收服務器響應所需的全部時間。

SpanTrace在系統中與Zipkin Annotation一起顯示的可視化示例:

(https://github.com/spring-cloud/spring-cloud-sleuth)


SpringCloud 2.x之Spring Cloud 服務跟蹤總結


1、 依賴說明

從中央倉庫https://mvnrepository.com可以查詢到以下與zipkin和sleuth相關的jar引用:spring-cloud-starter-zipkin、spring-cloud-starter-sleuth、spring-cloud-sleuth-zipkin,他們只有有什麼關係呢?


"

其實Spring Cloud實施分佈式跟蹤解決方案所用的技術不僅僅是zipkin。在spring官網:

http://spring.io/projects/spring-cloud-sleuth

有這麼一段話:


SpringCloud 2.x之Spring Cloud 服務跟蹤總結



翻譯過來:

Spring Cloud Sleuth是Spring Cloud實施分佈式跟蹤解決方案,大量借用Dapper,Zipkin和HTrace。對於大多數用戶來說,偵探應該是隱形的,並且所有與外部系統的交互都應該自動進行檢測。您可以簡單地在日誌中捕獲數據,也可以將數據發送到遠程收集器服務。

Spring CloudSleuth借用了Dapper的術語:

跨度(Span):基本的工作單位。例如,發送一個RPC是一個新的跨度,就像向RPC發送響應一樣。跨度由跨度的唯一64位ID和跨度所包含的另一個 64位ID標識。Spans還具有其他數據,例如描述,時間戳事件,鍵值註釋(標記),導致它們的跨度的ID以及進程ID(通常為IP地址)。跨度啟動和停止,並跟蹤他們的時間信息。一旦你創建了一個跨度,你必須在將來某個時候停止它。開始追蹤的初始跨度被稱為 root span。該跨度的span id的值等於trace id。

痕跡(Trace):一組形成樹狀結構的跨度。例如,如果您正在運行分佈式大數據存儲,則跟蹤可能由放入請求組成。

標註(Annotation):用於及時記錄事件的存在。用於定義請求開始和結束的一些核心註釋是:

cs - 客戶端發送 - 客戶端發出請求。這個註釋描述了跨度的開始。

sr - 服務器已收到 - 服務器端收到請求並開始處理。如果從這個時間戳中減去cs時間戳,將會收到網絡延遲。

ss - 服務器發送 - 在請求處理完成時(當響應被髮送回客戶端時)註釋。如果從這個時間戳中減去sr時間戳,將會收到服務器端處理請求所需的時間。

cr - 客戶端收到 - 表示跨度結束。客戶端已經成功接收到服務器端的響應。如果從這個時間戳中減去cs時間戳,那麼將會收到客戶端接收服務器響應所需的全部時間。

SpanTrace在系統中與Zipkin Annotation一起顯示的可視化示例:

(https://github.com/spring-cloud/spring-cloud-sleuth)


SpringCloud 2.x之Spring Cloud 服務跟蹤總結


1、 依賴說明

從中央倉庫https://mvnrepository.com可以查詢到以下與zipkin和sleuth相關的jar引用:spring-cloud-starter-zipkin、spring-cloud-starter-sleuth、spring-cloud-sleuth-zipkin,他們只有有什麼關係呢?


SpringCloud 2.x之Spring Cloud 服務跟蹤總結



從pom.xml的引用關係可以看到spring-cloud-starter-zipkin包含了spring-cloud-starter-sleuth和spring-cloud-sleuth-zipkin,就是所引入spring-cloud-starter-zipkin就等於引用了spring-cloud-starter-sleuth和spring-cloud-sleuth-zipkin

2、 配置說明

Zipkin和Sleuth配置類分別是:

Zipkin:org.springframework.cloud.sleuth.zipkin2.ZipkinProperties

Sleuth:org.springframework.cloud.sleuth.autoconfig.SleuthProperties

從這兩個類就可以知道Zipkin和Sleuth分別有哪些配置項

3、 分佈式服務跟蹤系統原理

分佈式服務跟蹤系統,主要有三部分:數據收集、數據存儲和數據展示。根據系統大小不同,每一部分的結構又有一定變化。譬如對於大規模分佈式系統,數據存儲可分為實時數據和全量數據兩部分,實時數據用於故障排查(trouble shooting),全量數據用於系統優化;數據收集除了支持平臺無關和開發語言無關係統的數據收集,還包括異步數據收集(需要跟蹤隊列中的消息,保證調用的連貫性),以及確保更小的侵入性;數據展示又涉及到數據挖掘和分析。雖然每一部分都可能變得很複雜,但基本原理都類似。

阿里雲的一些服務可以類比,比如你需要收集一臺雲主機的IO情況,CPU使用率、磁盤使用情況等;就需要在我們的雲主機安裝一個代理agent(類比ZipkinClient),這個代理agent的作用就是收集當前主機的數據,然後上送到管理控制檯(類比ZipkinServer)

讀完本篇文章,小夥伴們對springcloud 的服務跟蹤是不是有了更深刻的認識了呢?

關注小編,小編會每天為你分享有趣的技術文章哦。偷偷告訴你私信小編“學習”會有意想不到的驚喜喲~~!

"

相關推薦

推薦中...