0、目錄
整體架構目錄:
ASP.NET Core分布式項目實戰-目錄監控目錄:
微服務監控zipkin、skywalking以及日志ELK監控系列一、zipkin介紹
zipkin是一種分布式跟蹤系統,有助于收集微服務架構中的延遲問題所需要的時序資料(收集查找),收集微服務之間的調用情況,然後處理調用之間資料延遲等問題。
如下圖:微服務調用情況深度。(官方文檔圖)

以及依賴圖分析,會展示出微服務之間的調用關系。當然下圖展示的是我案例中的圖檔
二、zipkin作用
1、全鍊路追蹤工具(檢視依賴關系)
2、檢視每個接口、每個service的執行速度(定位問題發生點或者尋找性能瓶頸)
zipkin包含:
收集器(Collector):主要是收集微服務所産生的資料(收集器有:http、kafka、rabbitmq)
UI(界面):主要是展示資料的界面
Storage(存儲):存儲資料(es、mysql、記憶體、cassandra)
in-memory:僅供測試
JDBC(mysql):資料采集量很大,查詢速度會比較慢。
Cassandra:zipkin最初始内建的存儲(擴充性好、schema靈活)
(推薦)Elasticsearch:被用于大規模,資料量大的,存儲形式json。
API:檢視/檢索 資料的接口,主要用于WebUI中
結構圖:
流程解釋:
1、transport作用:收集trace的services的spans,并将它們轉化為zipkin common span
2、zipkin核心資料結構
Annotation:用于定位一個request的開始和結束,計算調用延遲。
cs:Client Start,表示用戶端發起請求,一個span的開始
sr:Server Receive,表示服務端收到請求
ss:Server Send,表示服務端完成處理,并将結果發送給用戶端
cr:Client Received,表示用戶端擷取到服務端傳回資訊
注意:時間點計算
sr-cs:網絡延遲
ss-sr:邏輯處理時間
cr-cs:整個流程時間
三、asp.net core 部署zipkin
1、需要在每個微服務架構中加入zipkin分布式跟蹤系統
此項目會建立兩個項目一個是 demo1,一個是demo2
2、nuget包安裝:
zipkin4net(追蹤器)
zipkin4net.middleware.aspnetcore(aspnetcore 中間件)
3、項目中的 Startup.cs 裡面Configure方法中注冊中間件
4、配置startup.cs之後還需要配置RPCTraceHandler
即在發送Get/Post請求的HttpClient中添加追蹤處理者,至此 asp.net core部署完成。
5、上面部署的的隻是demo1 服務,是以同樣的方式部署demo2項目。
6、現在docker部署zipkin
資料存儲方式:記憶體(僅測試)
docker 指令: docker run -d -p 9411:9411 --name zipkin openzipkin/zipkin
部署成功後 在浏覽器中打開 ,這邊我采用的是虛拟機,是以打開位址為 192.168.216.135:9411
7、至此部署完成
我們在 asp.net core項目的控制其中寫上調用demo2 api/values 的接口位址
追蹤在zipkinUI 上面呈現如下:
圖1、
圖2、
圖3:依賴分析
8、此zipkin 部署是存在記憶體中的,不适合正式環境
注:一旦資料量上去後,zipkin容易被壓崩掉。
是以需要其他解決方案代替。
目前樓主我采用的解決方案是kafka+zipkin+es。如果有更好的解決方案可以嘗試。
項目demo代碼:
github:
zipkinTraceDemo參考資料:
官網文檔:https://zipkin.io/pages/architecture.html
ZIPKIN API 接口:https://zipkin.io/zipkin-api/#/
asp.net Core 交流群:787464275 歡迎加群交流
如果您認為這篇文章還不錯或者有所收獲,您可以點選右下角的【推薦】按鈕精神支援,因為這種支援是我繼續寫作,分享的最大動力!
作者:
LouieGuo http://www.cnblogs.com/stulzq聲明:原創部落格請在轉載時保留原文連結或者在文章開頭加上本人部落格位址,如發現錯誤,歡迎批評指正。凡是轉載于本人的文章,不能設定打賞功能,如有特殊需求請與本人聯系!
微信公衆号:歡迎關注 QQ技術交流群: 歡迎加群