1、簡介spring
Spring Cloud Sleuth 主要功能就是在分佈式系統中提供追蹤解決方案,而且兼容支持了 zipkin,你只須要在pom文件中引入相應的依賴便可。願意瞭解源碼的朋友直接求求交流分享技術:二一四七七七五六三三服務器
2、服務追蹤分析網絡
微服務架構上經過業務來劃分服務的,經過REST調用,對外暴露的一個接口,可能須要不少個服務協同才能完成這個接口功能,若是鏈路上任何一個服務出現問題或者網絡超時,都會造成致使接口調用失敗。隨着業務的不斷擴張,服務之間互相調用會愈來愈複雜。架構
3、術語app
Spring Cloud Sleuth採用的是Google的開源項目Dapper的專業術語。分佈式
Span:基本工做單元,例如,在一個新建的span中發送一個RPC等同於發送一個迴應請求給RPC,span經過一個64位ID惟一標識,trace以另外一個64位ID表示,span還有其餘數據信息,好比摘要、時間戳事件、關鍵值註釋(tags)、span的ID、以及進度ID(一般是IP地址)
span在不斷的啓動和中止,同時記錄了時間信息,當你建立了一個span,你必須在將來的某個時刻中止它。
Trace:一系列spans組成的一個樹狀結構,例如,若是你正在跑一個分佈式大數據工程,你可能須要建立一個trace。
Annotation:用來及時記錄一個事件的存在,一些核心annotations用來定義一個請求的開始和結束
cs - Client Sent -客戶端發起一個請求,這個annotion描述了這個span的開始
sr - Server Received -服務端得到請求並準備開始處理它,若是將其sr減去cs時間戳即可獲得網絡延遲
ss - Server Sent -註解代表請求處理的完成(當請求返回客戶端),若是ss減去sr時間戳即可獲得服務端須要的處理請求時間
cr - Client Received -代表span的結束,客戶端成功接收到服務端的回覆,若是cr減去cs時間戳即可獲得客戶端從服務端獲取回覆的全部所需時間
將Span和Trace在一個系統中使用Zipkin註解的過程圖形化:微服務
每一個顏色的代表一個span(總計7個spans,從A到G),每一個span有相似的信息大數據
Trace Id = X
Span Id = D
Client Sent
此span表示span的Trance Id是X,Span Id是D,同時它發送一個Client Sent事件spa
spans 的parent/child關係圖形化以下: 3d
spring cloud提供了spring-cloud-sleuth-zipkin來方便集成zipkin實現(指的是Zipkin Client,而不是Zipkin服務器),該jar包能夠經過spring-cloud-starter-zipkin依賴來引入。
技術架構圖以下: