分布式鏈路追蹤技術適?場景(問題場景)
場景描述
為了?撐?益增?的龐?業務量,我們會使?微服務架構設計我們的系統,使得我們的系統不僅能夠通過集群部署抵擋流量的沖擊,?能根據業務進?靈活的擴展,
那么,在微服務架構下,?次請求少則經過三四次服務調?完成,多則跨越??個甚?是上百個服務節點,那么問題接踵?來:
1)如何動態展示服務的調?鏈路?(?如A服務調?了哪些其他的服務—依賴關系)
2)如何分析服務調?鏈路中的瓶頸節點并對其進?調優?(?如A—>B—>C,C服務處理時間特別?)
3)如何快速進?服務鏈路的故障發現?
這就是分布式鏈路追蹤技術存在的?的和意義
分布式鏈路追蹤技術
如果我們在?個請求的調?處理程序中,在各個鏈路節點都能夠記錄下?志,并最終將?志進?集中可視化展示,那么我們想監控調?鏈路中的?些指標就有希望了~~~?如,請求到達哪個服務實體?請求被處理的狀態怎樣?處理耗時怎樣?這些都能夠分析出來了…
分布式環境下基于這種想法實作的監控技術就是就是分布式鏈路追蹤(全鏈路追蹤),
市場上的分布式鏈路追蹤?案
分布式鏈路追蹤技術已然成熟,產品也不少,國內外都有,?如
Spring Cloud Sleuth + Twitter Zipkin
阿?巴巴的“鷹眼”
?眾點評的“CAT”
美團的“Mtrace”
京東的“Hydra”
新浪的“Watchman”
另外還有最近也被提到很多的Apache Skywalking,
分布式鏈路追蹤技術核?思想
本質:記錄?志,作為?個完整的技術,分布式鏈路追蹤也有??的理論和概念
微服務架構中,針對請求處理的調?鏈可以展現為?棵樹,示意如下

上圖描述了?個常?的調?場景,?個請求通過?關服務路由到下游的微服務-1,然后微服務-1調?微服務-2,拿到結果后再調?微服務-3,最后組合微服務-2和微服務-3的結果,通過?關回傳給?戶
為了追蹤整個調?鏈路,肯定需要記錄?志,?志記錄是基礎,在此之上肯定有?些理論概念,當下主流的的分布式鏈路追蹤技術/系統所基于的理念都來?于Google的?篇論?《Dapper, a Large-ScaleDistributed Systems Tracing Infrastructure》,這??涉及到的核?理念是什么,我們來看下,還以前?的服務調?來說

上圖示識?個請求鏈路,?條鏈路通過TraceId唯?標識,span標識發起的請求資訊,各span通過parrentId關聯起來
Trace:服務追蹤的追蹤單元是從客戶發起請求(request)抵達被追蹤系統的邊界開始,到被追蹤系統向客戶回傳回應(response)為?的程序
Trace ID:為了實作請求跟蹤,當請求發送到分布式系統的??端點時,只需要服務跟蹤框架為該請求創建?個唯?的跟蹤標識Trace ID,同時在分布式系統內部流轉的時候,框架失蹤保持該唯?標識,直到回傳給請求??個Trace由?個或者多個Span組成,每?個Span都有?個SpanId,Span中會記錄TraceId,同時還有?個叫做ParentId,指向了另外?個Span的SpanId,表明??關系,其實本質表達了依賴關系
Span ID:為了統計各處理單元的時間延遲,當請求到達各個服務組件時,也是通過?個唯?標識SpanID來標記它的開始,具體程序以及結束,對每?個Span來說,它必須有開始和結束兩個節點,通過記錄開始Span和結束Span的時間戳,就能統計出該Span的時間延遲,除了時間戳記錄之外,它還可以包含?些其他元資料,?如時間名稱、請求資訊等
每?個Span都會有?個唯?跟蹤標識 Span ID,若?個有序的 span 就組成了?個 trace,
Span可以認為是?個?志資料結構,在?些特殊的時機點會記錄了?些?志資訊,?如有時間戳、spanId、TraceId,parentIde等,Span中也抽象出了另外?個概念,叫做事件,核?事件如下
CS :client send/start 客戶端/消費者發出?個請求,描述的是?個span開始
SR: server received/start 服務端/?產者接收請求 SR-CS屬于請求發送的?絡延遲
SS: server send/finish 服務端/?產者發送應答 SS-SR屬于服務端消耗時間
CR:client received/finished 客戶端/消費者接收應答 CR-SS表示回復需要的時間(回應的?絡延遲)
Spring Cloud Sleuth (追蹤服務框架)可以追蹤服務之間的調?,Sleuth可以記錄?個服務請求經過哪些服務、服務處理時?等,根據這些,我們能夠理清各微服務間的調?關系及進?問題追蹤分析,
**耗時分析:**通過 Sleuth 了解采樣請求的耗時,分析服務性能問題(哪些服務調??較耗時)
**鏈路優化:**發現頻繁調?的服務,針對性優化等
Sleuth就是通過記錄?志的?式來記錄蹤跡資料的
注意:我們往往把Spring Cloud Sleuth 和 Zipkin ?起使?,把 Sleuth 的資料資訊發送給 Zipkin 進?聚合,利? Zipkin 存盤并展示資料,


轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/158156.html
標籤:其他
上一篇:作為程式員為什么要閱讀原始碼
