鏈路追蹤(Sleuth、Zipkin)


1.技術背景

在微服務架構中,隨着業務發展,系統拆分導致系統調用鏈路愈發復雜,一個看似簡單的前端請求可能最終需要調用很多次后端服務才能完成,那么當整個請求出現問題時,我們很難得知到底是哪個服務出了問題導致的,這時就需要解決一個問題,即如何快速定位服務故障點,分布式系統調用鏈追蹤技術就此誕生了。

2.Zipkin

ZipKin是一個由Twitter公司提供並開放源代碼分布式的跟蹤系統, 它可以幫助收集服務的時間數據,以解決微服務架構中的延遲問題,包括數據的收集、存儲、查找和展現。每個服務向ZipKin報告定時數據, ZipKin會根據調用關系通過ZipKinUI生成依賴關系圖, 展示多少跟蹤請求經過了哪些服務, 該系統讓開發者可通過一個Web前端輕松地收集和分析數據,例如用戶每次請求服務的處理時間等,可非常方便地監測系統中存在的瓶頸。
Zip Kin提供了可插拔數據存儲方式:In-Memory、MySQL、Cassandra以及Elastic search。
我們可以根據需求選擇不同的存儲方式,生成環境一般都雷要持久化。我們這里采用Elasticsearch作為ZipKin的數據存儲器.

3.Spring Cloud Sleuth

一般而言,一個分布式服務追蹤系統,主要由3部分組成:數據收集、數據存儲和數據展示。


Spring Cloud Sleuth為服務之聞的調用提供鏈路追蹤, 通過Sleuth可以很清楚地了解到一個服務請求經過了哪些服務,每個服務處理花費了多長時間,從而讓我們可以很方便地理清各微服務間的調用關系.此外, Sleuth還可以幫助我們:
·耗時分析:通過Sleuth可以很方便地了解到每個采樣請求的耗時, 從而分析出哪些服務調用比較耗時.
·可視化錯誤:對於程序未捕捉的異常, 可以通過集成Zip Kin服務在界面上看到.
·鏈路優化:對於調用比較頻繁的服務,可以針對這些服務實施一些優化措施.
Spring Cloud Sleuth可以結合Zip Kin, 將信息發送到Zip Kin, 利用Zip Kin的存儲來存儲信息, 利用Zip Kin UI來展示數據。







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM