Zipkin基本概念
- Span:基本工作單元,一次鏈路調用就會創建一個Span
- Trace:一組Span的集合,表示一條調用鏈路。舉個例子:當前存在服務A調用服務B然后調用服務C,這個A->B->C的鏈路就是一條Trace,而每個服務例如B就是一個Span,如果在服務B中另起2個線程分別調用了D、E,那么D、E就是B的子Span
Zipkin架構
先看一下架構圖
其中左邊部分代表了客戶端分別為:
- InstrumentedClient:使用了Zipkin客戶端工具的服務調用方
- InstrumentedServer:使用了Zipkin客戶端工具的服務提供方
- Non-InstrumentedServer:未使用Trace工具的服務提供方,當然還可能存在未使用工具的調用方
- 總結:一個調用鏈路是貫穿InstrumentedClient->InstrumentedServer的,每經過一個服務都會以Span的形式通過Transport把經過自身的請求上報的Zipkin服務端中
右邊線框內代表了Zipkin的服務端,其中各組件的功能如下:
- UI:提供web頁面,用來展示Zipkin中的調用鏈和系統依賴關系等
- Collector:對各個客戶端暴露,負責接受調用數據,支持HTTP、MQ等
- Storage:負責與各個存儲適配后存儲數據,支持內存,MySQL,ES等
- API:為web界面提供查詢存儲中的數據的接口
關注公眾號:JAVA學習錄,查看更多Spring、SpringBoot、SpringCloud源碼解析系列文章