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