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 部署zipkin1、需要在每個微服務架構中加入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。如果有更好的解決方案可以嘗試。
參考資料:
官網文檔:zipkin.io/pages/architecture.html
ZIPKIN API 介面:zipkin.io/zipkin-api/#/
asp.net Core 交流群:787464275 歡迎加群交流
如果您認為這篇文章還不錯或者有所收穫,您可以點擊右下角的【推薦】按鈕精神支援,因為這種支援是我繼續寫作,分享的最大動力!
LouieGuo
聲明:原創部落格請在時保留原文連結或者在文章開頭加上本人部落格地址,如發現錯誤,歡迎批評指正。凡是於本人的文章,不能設定打賞功能,如有特殊需求請與本人聯絡!