新聞中心
這篇文章將為大家詳細(xì)講解有關(guān)ASP.NET Core實(shí)現(xiàn)整合Zipkin鏈路跟蹤的方法,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

Zipkin簡(jiǎn)介
Zipkin是由Twitter開源的一款基于Java語言開發(fā)的分布式實(shí)時(shí)數(shù)據(jù)追蹤系統(tǒng)(Distributed Tracking System),其主要功能是采集來自各個(gè)系統(tǒng)的實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)。該系統(tǒng)讓開發(fā)者可通過一個(gè) Web 前端輕松的收集和分析數(shù)據(jù),例如用戶每次請(qǐng)求服務(wù)的處理時(shí)間等,可方便的監(jiān)測(cè)系統(tǒng)中存在的瓶頸。它大致可以分為三個(gè)核心概念
- 首先是上報(bào)端,它主要通過代碼的形式集成到程序中,用于上報(bào)Trace數(shù)據(jù)到Collector端。
- Collector負(fù)責(zé)接收客戶端發(fā)送過來的數(shù)據(jù),保存到內(nèi)存或外部存儲(chǔ)系統(tǒng)中,供UI展示。
- 存儲(chǔ)端可以是基于zipkin內(nèi)存完全不依賴外部存儲(chǔ)的In-Memory形式或依賴外部存儲(chǔ)系統(tǒng)的形式,一般采用外部存儲(chǔ)系統(tǒng)存儲(chǔ)鏈路數(shù)據(jù),畢竟內(nèi)存有限。它可支持的存儲(chǔ)數(shù)據(jù)庫有MySQL、Cassandra、Elasticsearch。
- UI負(fù)責(zé)展示采集的鏈路數(shù)據(jù),及系統(tǒng)之間的依賴關(guān)系。
相對(duì)來說還是比較清晰的,如果用一張圖表示整體架構(gòu)的話,大致如下圖所示(圖片來源于網(wǎng)絡(luò))
在學(xué)習(xí)鏈路跟蹤的過程中會(huì)設(shè)計(jì)到相關(guān)概念,我們接下來介紹鏈路跟蹤幾個(gè)相關(guān)的概念
- TranceId,一般一次全局的請(qǐng)求會(huì)有一個(gè)唯一的TraceId,用于代表一次唯一的請(qǐng)求。比如我請(qǐng)求了訂單管理系統(tǒng),而訂單管理系統(tǒng)內(nèi)部還調(diào)用了商品管理系統(tǒng),而商品管理系統(tǒng)還調(diào)用了緩存系統(tǒng)或數(shù)據(jù)庫系統(tǒng)。但是對(duì)全局或外部來說這是一次請(qǐng)求,所以會(huì)有唯一的一個(gè)TraceId。
- SpanId,雖然全局的來說是一次大的請(qǐng)求,但是在這個(gè)鏈路中內(nèi)部間還會(huì)發(fā)起別的請(qǐng)求,這種內(nèi)部間的每次請(qǐng)求會(huì)生成一個(gè)SpanId。
- 如果將整條鏈路串聯(lián)起來的話,我們需要記錄全局的TraceId,代表當(dāng)前節(jié)點(diǎn)的SpanId和發(fā)起對(duì)當(dāng)前節(jié)點(diǎn)調(diào)用的的父級(jí)ParentId。
- 然后基于鏈路跟蹤的核心概念,然后介紹一下Zipkin衍生出來了幾個(gè)相關(guān)概念
- cs:Clent Sent 客戶端發(fā)起請(qǐng)求的時(shí)間,比如 dubbo 調(diào)用端開始執(zhí)行遠(yuǎn)程調(diào)用之前。
- cr:Client Receive 客戶端收到處理完請(qǐng)求的時(shí)間。
- ss:Server Receive 服務(wù)端處理完邏輯的時(shí)間。
sr - cs = 請(qǐng)求在網(wǎng)絡(luò)上的耗時(shí) ss - sr = 服務(wù)端處理請(qǐng)求的耗時(shí) cr - ss = 回應(yīng)在網(wǎng)絡(luò)上的耗時(shí) cr - cs = 一次調(diào)用的整體耗時(shí)
網(wǎng)站名稱:ASP.NETCore實(shí)現(xiàn)整合Zipkin鏈路跟蹤的方法-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://www.dlmjj.cn/article/hhces.html


咨詢
建站咨詢
