總體架構目錄:ASP.NET Core分佈式項目實戰-目錄html
監控目錄:微服務監控zipkin、skywalking以及日誌ELK監控系列mysql
zipkin是一種分佈式跟蹤系統,有助於收集微服務架構中的延遲問題所須要的時序數據(收集查找),收集微服務之間的調用狀況,而後處理調用之間數據延遲等問題。git
以下圖:微服務調用狀況深度。(官方文檔圖)github
以及依賴圖分析,會展現出微服務之間的調用關係。固然下圖展現的是我案例中的圖片sql
一、全鏈路追蹤工具(查看依賴關係)docker
二、查看每一個接口、每一個service的執行速度(定位問題發生點或者尋找性能瓶頸)json
zipkin包含:
收集器(Collector):主要是收集微服務所產生的數據(收集器有:http、kafka、rabbitmq)
UI(界面):主要是展現數據的界面
Storage(存儲):存儲數據(es、mysql、內存、cassandra)
in-memory:僅供測試
JDBC(mysql):數據採集量很大,查詢速度會比較慢。
Cassandra:zipkin最初始內建的存儲(擴展性好、schema靈活)
(推薦)Elasticsearch:被用於大規模,數據量大的,存儲形式json。
API:查看/檢索 數據的接口,主要用於WebUI中api
結構圖:瀏覽器
流程解釋:
一、transport做用:收集trace的services的spans,並將它們轉化爲zipkin common span
二、zipkin核心數據結構
Annotation:用於定位一個request的開始和結束,計算調用延遲。
cs:Client Start,表示客戶端發起請求,一個span的開始
sr:Server Receive,表示服務端收到請求
ss:Server Send,表示服務端完成處理,並將結果發送給客戶端
cr:Client Received,表示客戶端獲取到服務端返回信息微信
注意:時間點計算
sr-cs:網絡延遲
ss-sr:邏輯處理時間
cr-cs:整個流程時間
此項目會新建兩個項目一個是 demo1,一個是demo2
zipkin4net(追蹤器)
zipkin4net.middleware.aspnetcore(aspnetcore 中間件)
即在發送Get/Post請求的HttpClient中添加追蹤處理者,至此 asp.net core部署完成。
數據存儲方式:內存(僅測試)
docker 命令: docker run -d -p 9411:9411 --name zipkin openzipkin/zipkin
部署成功後 在瀏覽器中打開 ,這邊我採用的是虛擬機,所以打開地址爲 192.168.216.135:9411
咱們在 asp.net core項目的控制其中寫上調用demo2 api/values 的接口地址
追蹤在zipkinUI 上面呈現以下:
圖一、
圖二、
圖3:依賴分析
注:一旦數據量上去後,zipkin容易被壓崩掉。
所以須要其餘解決方案代替。
目前樓主我採用的解決方案是kafka+zipkin+es。若是有更好的解決方案能夠嘗試。
項目demo代碼:
github: zipkinTraceDemo
參考資料:
官網文檔:https://zipkin.io/pages/architecture.html
ZIPKIN API 接口:https://zipkin.io/zipkin-api/#/
asp.net Core 交流羣:787464275 歡迎加羣交流
若是您認爲這篇文章還不錯或者有所收穫,您能夠點擊右下角的【推薦】按鈕精神支持,由於這種支持是我繼續寫做,分享的最大動力!
微信公衆號:歡迎關注 QQ技術交流羣: 歡迎加羣