分散式系統中的分散式鏈路追蹤與分散式呼叫鏈路

天翼雲開發者社群發表於2024-01-19

本文分享自天翼雲開發者社群《 分散式系統中的分散式鏈路追蹤與分散式呼叫鏈路 》,作者: c****w

在分散式系統中,由於服務間的呼叫關係複雜,需要實現分散式鏈路追蹤來跟蹤請求在各個服務中的呼叫路徑和時間消耗。這對問題排查和效能監控都很重要。

常用的分散式鏈路追蹤實現有基於日誌的和基於分散式追蹤系統的兩種方式:

基於日誌的實現方式是在每個服務中記錄自己的請求id和上下文資訊,並在日誌中列印出來。這樣可以透過聚合各個服務的日誌來還原整個請求鏈路。

基於分散式追蹤系統的實現方式是:

使用開源Tracing系統,比如Zipkin。每個服務都需要整合Tracing客戶端庫。

客戶端在發起請求時,生成一個唯/一的TraceId並傳遞給下游服務。

每個服務接收到請求都需要記錄Span資料,包括操作名、時間戳等。

所有Span資料透過訊息佇列傳送給Tracing系統。

Tracing系統將收集的Span透過時間排序後重構成一條鏈路。

這裡繼續擴充套件分散式鏈路追蹤的幾點內容:

1.資料收集方式除了日誌和Tracing系統外,還可以採用專用Agent向中心伺服器報告追蹤資料。

2.鏈路資料展示可以透過視覺化追蹤系統實現,支援過濾、聚合查詢等功能尋找效能瓶頸。

3.鏈路資料可以進一步用於異常監控,比如追蹤錯誤請求的整個呼叫鏈路排查問題。

4.鏈路資料也可以用於應用效能監控(APM),追蹤每個服務的響應時間分佈找出慢服務。

5.分散式追蹤需要考慮大量分散式呼叫產生的高併發壓力,選擇效能優異的追蹤系統實現。

6.鏈路資料可以透過機器學習演演算法進行分析,自動學習出正常呼叫模式,找出異常呼叫路徑。

7.鏈路ID的傳播需要考慮多種語言和協議的相容,保證ID的上下文傳遞。

8.鏈路資料的儲存和查詢也是一個重要問題,需要考慮大規模分散式追蹤資料的處理能力。

9.鏈路取樣是一種常用最佳化手段,只對部分請求進行詳細追蹤,降低系統壓力。

以上內容給出了分散式鏈路追蹤在資料收集、展示、應用等方面的一些進一步思路,對系統設計和最佳化很有幫助。


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70014251/viewspace-3004417/,如需轉載,請註明出處,否則將追究法律責任。

相關文章