链路追踪之zipkin
微服務架構是一個分布式架構,它按業務劃分服務單元,一個分布式系統往往有很多個服務單元。由于服務單元數量眾多,業務的復雜性,如果出現了錯誤和異常,很難去定位。主要體現在,一個請求可能需要調用很多個服務,而內部服務的調用復雜性,決定了問題難以定位。所以微服務架構中,必須實現分布式鏈路追蹤,去跟進一個請求到底有哪些服務參與,參與的順序又是怎樣的,從而達到每個請求的步驟清晰可見,出了問題,很快定位。而Zipkin可以結合壓力測試工具一起使用,分析系統在大壓力下的可用性和性能。
Zipkin 是什么?
?Zipkin是一款開源的分布式實時數據追蹤系統(Distributed Tracking System),基于 Google Dapper的論文設計而來,由 Twitter 公司開發貢獻。其主要功能是聚集來自各個異構系統的實時監控數據。分布式跟蹤系統還有其他比較成熟的實現,例如:Naver的Pinpoint、Apache的HTrace、阿里的鷹眼Tracing、京東的Hydra、新浪的Watchman,美團點評的CAT,skywalking等。
為什么用 Zipkin?
?隨著業務越來越復雜,系統也隨之進行各種拆分,特別是隨著微服務架構和容器技術的興起,看似簡單的一個應用,后臺可能有幾十個甚至幾百個服務在支撐;一個前端的請求可能需要多次的服務調用最后才能完成;當請求變慢或者不可用時,我們無法得知是哪個后臺服務引起的,這時就需要解決如何快速定位服務故障點,Zipkin分布式跟蹤系統就能很好的解決這樣的問題。
Zipkin的工作過程:
?當用戶發起一次調用時,Zipkin 的客戶端會在入口處為整條調用鏈路生成一個全局唯一的 trace id,并為這條鏈路中的每一次分布式調用生成一個 span id。span 與 span 之間可以有父子嵌套關系,代表分布式調用中的上下游關系。span 和 span 之間可以是兄弟關系,代表當前調用下的兩次子調用。一個 trace 由一組 span 組成,可以看成是由 trace 為根節點,span 為若干個子節點的一棵樹。
?Zipkin 會將 trace 相關的信息在調用鏈路上傳遞,并在每個調用邊界結束時異步的把當前調用的耗時信息上報給 Zipkin Server。Zipkin Server 在收到 trace 信息后,將其存儲起來。隨后 Zipkin 的 Web UI 會通過 API 訪問的方式從存儲中將 trace 信息提取出來分析并展示。
總結
以上是生活随笔為你收集整理的链路追踪之zipkin的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker与虚拟机的对比
- 下一篇: GD项目回顾之JWT