微服務 關於分布式鏈路追蹤

2021-10-02 21:48:59 字數 1567 閱讀 8955

本篇的主要思路在於從分布式鏈路的思想開始,接下來介紹應用較廣泛的開源實現zipkin,最後對spring cloud sleuth這個具體的解決方案進行說明。

為什麼需要鏈路追蹤(鏈路治理)

微服務是乙個分布式服務的設計正規化,目的是將複雜的單體應用進行拆分,「左耳朵耗子」前輩說關於服務依賴的一句話:

微服務是服務依賴最優解的上限,服務依賴的下限是不要有依賴環

在這裡,據我的理解,分布式鏈路追蹤至少可以提供兩個功能:

快速定位故障節點

梳理服務依賴關係

zipkin可以讓開發人員在服務進行呼叫時檢視服務之間的依賴關係。

首先,請求是跨多個服務的,怎麼關聯到一起;其次,日誌聚合;再有,視覺化,同時要有各個部分效能特徵

zipkin是乙個開源資料視覺化工具,可以顯示跨多個服務的請求流。

zipkin有如下四個主要元件:

collector:收集器元件,主要處理從外部系統發來的跟蹤資訊,將資訊轉化為zipkin內部處理到的span格式,用來支援後續的儲存,分析,展示等功能。

storage:儲存元件,主要處理收集器接收到的跟蹤資訊,預設儲存到記憶體。但我們可以修改儲存策略,通過其他儲存元件將跟蹤資訊儲存到資料庫。

restful api:api元件,主要用來提供外部訪問介面。

web ui:ui元件

資料模型:

spring cloud sleuth是spring cloud中的分布式追蹤解決方案。將關聯id填充到http呼叫上,同時將生成的追蹤資料提供給zipkin。同時還允許開發人員自定義trace。

實現方式:

sleuth通過新增過濾器的方式與其他spring元件進行互動,將生成的關聯id傳遞到所有系統呼叫。

分布式鏈路追蹤的核心架構

sleuth自動捕獲http呼叫,入站和出站訊息的追蹤資料,同時將每個服務呼叫對映到乙個跨度的概念,zipkin可以檢視乙個跨度的效能。

####小試牛刀

啟動zipkin的jar包(預設埠9411,資料儲存在記憶體)

應用程式中引入sleuth和zipkin相關依賴

>

>

org.springframework.cloudgroupid

>

>

spring-cloud-starter-sleuthartifactid

>

dependency

>

>

>

org.springframework.cloudgroupid

>

>

spring-cloud-sleuth-zipkinartifactid

>

dependency

>

新增配置:spring.zipkin.baseurl=http://localhost:9411

微服務鏈路追蹤 微服務的戰爭 選型?分布式鏈路追蹤

在經歷微服務的戰爭 級聯故障和雪崩 的 p0 級別事件後,你小手一攤便葛優躺了。開始進行自我覆盤,想起這次排查經歷,由於現在什麼基礎設施都還沒有,因此在接收到客戶反饋後,你是通過錯誤日誌進行問題檢查的。但在級聯錯誤中,錯誤日誌產生的實在是太多了,不同的服務不同的鏈路幾乎都擠在一起,修復時間都主要用在...

spring cloud 分布式鏈路追蹤

微服務之間進行呼叫 那麼如果我負責乙個模組 別人負責另乙個模組 我呼叫了他的方法 測試那邊卻報了錯 那是我的問題還是他的問題 這個時候大家應該就能想到日誌可以解決這個問題 如何使用日誌呢 先在配置檔案中加 logging path d logs poppy mall 日誌的存放位址最好再加個專案名的...

docker zipkin(分布式鏈路追蹤)實踐

參考 dependenciesspring name test 在zipkin上顯示的服務名,不寫則是 default zipkin base url zipkin服務的位址 sender type web 網上有人在zipkin上查不到記錄,說加上這個即可,但本人親測不加也是可以查到記錄 sleu...