Zipkin基本概念
- Span:基本工做單元,一次鏈路調用就會建立一個Span
- Trace:一組Span的集合,表示一條調用鏈路。舉個例子:當前存在服務A調用服務B而後調用服務C,這個A->B->C的鏈路就是一條Trace,而每一個服務例如B就是一個Span,若是在服務B中另起2個線程分別調用了D、E,那麼D、E就是B的子Span
Zipkin架構
先看一下架構圖web
![file file](http://static.javashuo.com/static/loading.gif)
其中左邊部分表明了客戶端分別爲:segmentfault
- InstrumentedClient:使用了Zipkin客戶端工具的服務調用方
- InstrumentedServer:使用了Zipkin客戶端工具的服務提供方
- Non-InstrumentedServer:未使用Trace工具的服務提供方,固然還可能存在未使用工具的調用方
- 總結:一個調用鏈路是貫穿InstrumentedClient->InstrumentedServer的,每通過一個服務都會以Span的形式經過Transport把通過自身的請求上報的Zipkin服務端中
右邊線框內表明了Zipkin的服務端,其中各組件的功能以下:架構
- UI:提供web頁面,用來展現Zipkin中的調用鏈和系統依賴關係等
- Collector:對各個客戶端暴露,負責接受調用數據,支持HTTP、MQ等
- Storage:負責與各個存儲適配後存儲數據,支持內存,MySQL,ES等
- API:爲web界面提供查詢存儲中的數據的接口
![1 1](http://static.javashuo.com/static/loading.gif)