農林漁牧網

您現在的位置是:首頁 > 畜牧業

遊客、收費站與交通局,原來這就是鏈路追蹤(Tracing)?

2022-03-16由 不知名網際網路大廠員工 發表于 畜牧業

鏈路是什麼意思

狹義上的鏈路追蹤(Tracing),是指跟蹤請求在分散式系統中的流轉路徑與狀態,協助開發運維人員進行故障診斷、容量預估、效能瓶頸分析與呼叫鏈路梳理等工作。技術實現上包含了資料埋點、採集、儲存、分析、視覺化等環節,形成了一套完整的技術體系。

而更廣義的鏈路追蹤,則涵蓋了由資料透傳能力衍生出的生態系統,比如全鏈路壓測、場景鏈路、業務全息排查等。我們可以為呼叫鏈路賦予業務語義,也可以將一次呼叫生命週期內的所有資料進行關聯整合,而不再侷限於鏈路資料本身。

由此可見,鏈路追蹤的應用場景廣闊,潛力巨大,它的核心屬性就是“關聯”。然而,鏈路追蹤(Tracing)相對於統計指標(Metrics)和應用日誌(Logging)更難理解,不容易運用,更難用好。因此,本文旨在透過生動形象的案例,一層層地揭開鏈路追蹤的神秘面紗,對它的本質與應用擁有整體的理解與把握。下面,先讓我們來看一個高速公路的例子。

一輛汽車飛馳在高速公路上

小明、小紅、小王計劃在“五一”期間去自駕遊,他們的旅遊路線各不相同。如果我們想追蹤他們的行程軌跡與時間該如何實現?

可能你會建議在每輛車上安裝一個追蹤器,確實,這是一種行之有效的方法。但是,當出行車輛擴充套件到全國數以十億計的規模,安裝追蹤器的成本就會很高。此時,讓我們換個角度思考一下,高速公路的路線是固定的,每隔一段距離就會一個收費站,如果我們在每個收費站上安裝監控,記錄車輛在每個收費站的軌跡與時間,就可以很經濟的實現車輛軌跡與行駛時間的追蹤。最終,我們得到了如下所示的行程記錄:

遊客、收費站與交通局,原來這就是鏈路追蹤(Tracing)?

遊客、收費站與交通局,原來這就是鏈路追蹤(Tracing)?

如果我們將每個遊客替換為服務請求,收費站替換為應用節點,那我們就可以得到每次呼叫的路由軌跡與狀態,這就是鏈路追蹤的含義。兩者的對映關係如下表所示:

遊客、收費站與交通局,原來這就是鏈路追蹤(Tracing)?

遊客、收費站和交通局

鏈路追蹤有多種應用場景,我們還是以上面的高速公路為例,不同的角色對行程追蹤的訴求與目的各不相同。

遊客,只關心自身的行程路線,需要途徑哪些收費站點?行駛時間有多長?沿途是否有擁堵或危險路段等。

收費站,只關心自身站點的狀態,比如站點吞吐量、平均過閘時間等,以便於提前安排檢票口值班人數。

交通局,會將所有的出行記錄彙總,提前估算整個高速公路網的出行流量、易擁堵路段、事故多發路段等,以便於提前疏通或加固問題路段,並給出合理的建議出行路線,有時還需要提前制定車輛限流策略等。

鏈路追蹤的應用和行程軌跡追蹤類似,遊客角色類似於單鏈路的查詢,收費站類似應用節點的統計監控,旅遊局類似全域性鏈路拓撲梳理。

單鏈路查詢

單鏈路查詢是 Tracing 最基礎的功能,它記錄了一次呼叫經過的所有節點以及對應的節點狀態資訊(服務名、耗時、狀態碼等),這就好比記錄了遊客自駕遊時經過的所有收費站,以及沿途的路況與行駛時間等資訊。單鏈路查詢是診斷特定請求異常/超時原因的有效手段,可以快速定位異常節點(擁堵的收費站)。

相對成熟的 Tracing 產品(比如阿里雲的 ARMS )除了基礎的鏈路資料外,還會記錄請求出入參、本地方法棧、關聯 SQL 與異常堆疊等資訊。這些細節資訊就好比車輛的型號大小、駕駛員駕齡、是否醉酒、沿途每一路段的詳細路況等,當呼叫不符合預期(行程異常)時,就可以精確的定位根因,如下圖所示:

遊客、收費站與交通局,原來這就是鏈路追蹤(Tracing)?

應用監控

假如你是收費站的站長,你會關注哪些資訊?收費站的車輛吞吐量?平均的過閘時間?車輛的來源與去向?同理,每一個應用節點,將途徑的所有呼叫資訊彙總後,就可以得到當前節點的吞吐量、耗時、應用或服務來源與去向等統計指標。這些指標可以幫助我們快速的識別當前應用的健康狀態。在實際生產系統中,通常還需要結合告警功能,實現風險的快速識別與處理,降低業務損失。

遊客、收費站與交通局,原來這就是鏈路追蹤(Tracing)?

鏈路拓撲

假如你是交通局的局長,你可能會關注全國高速公路網的整體執行狀態,有哪些易擁堵或事故多發路段與站點,如何確保核心道路執行通暢,不會出現重大交通癱瘓事件等等。此時,你需要對所有的車輛行程軌跡進行彙總分析。

同理,鏈路拓撲就是將全域性或某一入口服務的所有呼叫鏈路進行彙總,聚合為鏈路拓撲大圖,進而分析當前鏈路的效能瓶頸點、易故障點等,提前進行效能最佳化或風險防控,還可以根據歷史流量來指導未來的容量評估。

遊客、收費站與交通局,原來這就是鏈路追蹤(Tracing)?

初窺門徑

本文介紹了鏈路追蹤(Tracing)的基礎概念與應用,如果你仔細閱讀了上文,應該能夠感受到鏈路追蹤其實並不難理解,它的核心思路就跟我們平時開車導航,做路線規劃,值班安排的思路基本一致。它不是一個新的概念,而是一個已有概念在新場景的創新性應用。當然,如果我們將思維延展開,能夠發現它還有許多值得探索的場景,衍生出了非常豐富的生態體系,可以應用在容量規劃、測試迴歸、故障診斷、業務分析等方方面面。這些內容將在本系列的後續章節逐一講解,期待下次的交流。