程序員必知必會的分佈式鏈路追蹤技術:SpringCloudSleuth-Zipkin

Sleuth 與 Zipkin 技術

Spring Cloud Sleuth 爲 Spring Cloud 實現了分佈式跟蹤解決方案,Sleuth 可以結合 Zipkin 做鏈路跟蹤。Spring Cloud Sleuth 的服務鏈路跟蹤功能可以幫助我們快速發現錯誤根源,以及監控分析每條請求鏈路上的請求性能。Sleuth 的主要工作原理是攔截請求,並在日誌中加入額外的 Span 和 Trace 的相關信息。從 Sleuth 2.0.0 開始,Sleuth 使用 Brave 作爲調用鏈工具庫。Brave 是一個用於捕捉分佈式系統之間調用信息的工具庫,可以將這些信息以 Span 的形式發送給 Zipkin。

Zipkin 是一個分佈式跟蹤系統,用戶可以將 Sleuth 發送的時序數據存儲在 Elasticsearch 或者 MySQL 中,Zipkin UI 根據數據存儲顯示服務之間的請求調用詳情和依賴調用關係圖。

Spring Cloud Sleuth 的主要特性

Spring Cloud Sleuth 與 Zipkin 接入

創 建 兩 個 工 程 :
SampleSleuthZipkinApplication 和 ZipkinServerApplication。

SleuthZipkinApplication 的代碼實例

  1. 添加 Maven 依賴

情況一:如果你只使用 Sleuth,在不需要集成 Zipkin 的情況下,請將如下 Maven 依賴添加到工程中。

情況二:如果你想要 Sleuth 和 Zipkin 結合使用,請添加 Zipkin 依賴項。

  1. 修改配置文件

  1. 創建 SampleZipkinApplication 工程

  1. 創建一個異步的 Service 測試驗證服務

  1. 創建 Sleuth 的接受用戶請求的 Controller 實現類

下面是通過模擬不同 HTTP 調用請求的調用鏈日誌輸出。

http://127.0.0.1:3380/hi 對應同步請求場景,日誌輸出內容如下。

http://127.0.0.1:3380/async 對應異步請求場景,日誌輸出內容如下。

http://127.0.0.1:3380/start 對應同步異步混合請求場景,日誌輸出內容如下。

說明:上述代碼參考了 Spring Cloud Sleuth 官方源碼實現(Sleuth 源碼可在 GitHub 中查找),更多關於 Sleuth 的有趣實例可參考官網代碼。

ZipkinServerApplication 代碼實例

  1. 引入 Maven 依賴

  1. 使用 @EnableZipkinServer 啓動應用

訪 問 http://127.0.0.1 :9411/zipkin/ 首 頁 , 將 展 示 所 有 在 testsleuthzipkin 應用上發生的調用鏈信息,可以看到一次請求的調用整體延遲和 Span 數,如下圖所示。

下面一行代表一次完整的請求 http://127.0.0.1:3380/start,單擊可以查看調用鏈詳情,如下圖所示。

來源:

https://www.toutiao.com/article/7136385535459590691/?log_from=375fb615e0fb2_1661913671467

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/SDqDzm9wGEQ8lDVaLX9MaQ