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 歡迎加群交流
如果您認為這篇文章還不錯或者有所收獲,您可以點擊右下角的【推薦】按鈕精神支持,因為這種支持是我繼續寫作,分享的最大動力!
微信公眾號:歡迎關注 QQ技術交流群: 歡迎加群