大企業微服務集群之鏈路追蹤剖析,故障診斷、性能瓶頸定位(一)

前言

微服務是一種現象級的開發架構,無論大中小企業,不上微服務都不好意思說,微服務帶來易於團隊並行開發、獨立部署、模塊化管理等諸多優點。但是微服務將原單體拆分多個模塊獨立部署,各模塊之間鏈接變得錯綜複雜,在大規模分佈式系統中這種複雜鏈路給維護帶來了諸多困難。下面我們來一一分析:

s

大企業微服務集群之鏈路追蹤剖析,故障診斷、性能瓶頸定位(一)

什麼是鏈路追蹤技術

鏈路追蹤技術主要是收集、存儲、分析分佈式系統中的調用事件數據,協助開發運營人員進行故障診斷、容量預估、性能瓶頸定位以及調用鏈路梳理。 鏈路追蹤技術包含了數據埋點、收集、存儲、分析等相關技術,是一套技術體系。 大部分的鏈路追蹤框架都是參考 Google 鏈路追蹤系統 Dapper 的一篇設計論文(《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》),SOFARPC 的 SOFATracer 的設計靈感也是來自這篇著名論文。

以大規模分佈式電商系統為例,用戶下單購買某款產品時後端需要調用各系統或子模塊進行協作,共同完成一個用戶請求。 如下圖所示,用戶的下單行為涉及到了A、B、C、D、E、F 6 個系統的協同工作,這些系統都是以集群形式部署。整個鏈路中最長的鏈路調用是3層,如 A-> C -> E 或 A -> C -> F。

大企業微服務集群之鏈路追蹤剖析,故障診斷、性能瓶頸定位(一)

模塊的增多加大了系統出錯的概率,一旦因某系統/模塊出錯導致整個請求調用出錯,在缺乏鏈路追蹤的條件下很難定位具體出錯的模塊,只能通過日誌搜索定位。 在實際生產環境下比較關注一個請求中的各個模塊的耗時情況、連續調用情況、出錯的節點等信息。

為了解決上述問題,Dapper 提供了一套解決方案。整個方案分為數據收集、存儲和分析幾個部分。分佈式追蹤技術會記錄一個請求中各模塊的調用信息;並通過一個處理集群把所有機器上的日誌增量地收集到集群當中進行處理,將同一個請求的日誌串聯;最後可視化顯示調用情況。

常用的數據收集方式為埋點,通過在公共組件如 RPC 等注入代碼,收集服務調用的相關信息。目前大部分鏈路調用系統如 Dapper、鷹眼、Spring Cloud Sleuth 都在用這種模式。同樣 SOFARPC 作為一個公共的通訊框架,在金融業務領域被廣泛應用,因此適合作為埋點,這樣無需業務端自行埋點,可做到對業務代碼的無侵入性。

未完代續


大企業微服務集群之鏈路追蹤剖析,故障診斷、性能瓶頸定位(一)

如果大家學習需要資料的,私信“資料”獲取我整理的Java、安卓、運營、產品、數據庫優化的等技術資料,資料還在不斷增加中,希望對大家有幫助。


分享到:


相關文章: