本文分享自天翼云開發(fā)者社區(qū)《分布式系統(tǒng)中的分布式鏈路追蹤與分布式調(diào)用鏈路》,作者:c****w
在分布式系統(tǒng)中,由于服務(wù)間的調(diào)用關(guān)系復(fù)雜,需要實(shí)現(xiàn)分布式鏈路追蹤來(lái)跟蹤請(qǐng)求在各個(gè)服務(wù)中的調(diào)用路徑和時(shí)間消耗。這對(duì)問題排查和性能監(jiān)控都很重要。
常用的分布式鏈路追蹤實(shí)現(xiàn)有基于日志的和基于分布式追蹤系統(tǒng)的兩種方式:
基于日志的實(shí)現(xiàn)方式是在每個(gè)服務(wù)中記錄自己的請(qǐng)求id和上下文信息,并在日志中打印出來(lái)。這樣可以通過聚合各個(gè)服務(wù)的日志來(lái)還原整個(gè)請(qǐng)求鏈路。
基于分布式追蹤系統(tǒng)的實(shí)現(xiàn)方式是:
使用開源Tracing系統(tǒng),比如Zipkin。每個(gè)服務(wù)都需要集成Tracing客戶端庫(kù)。
客戶端在發(fā)起請(qǐng)求時(shí),生成一個(gè)唯/一的TraceId并傳遞給下游服務(wù)。
每個(gè)服務(wù)接收到請(qǐng)求都需要記錄Span數(shù)據(jù),包括操作名、時(shí)間戳等。
所有Span數(shù)據(jù)通過消息隊(duì)列發(fā)送給Tracing系統(tǒng)。
Tracing系統(tǒng)將收集的Span通過時(shí)間排序后重構(gòu)成一條鏈路。
這里繼續(xù)擴(kuò)展分布式鏈路追蹤的幾點(diǎn)內(nèi)容:
1.數(shù)據(jù)收集方式除了日志和Tracing系統(tǒng)外,還可以采用專用Agent向中心服務(wù)器報(bào)告追蹤數(shù)據(jù)。
2.鏈路數(shù)據(jù)展示可以通過可視化追蹤系統(tǒng)實(shí)現(xiàn),支持過濾、聚合查詢等功能尋找性能瓶頸。
3.鏈路數(shù)據(jù)可以進(jìn)一步用于異常監(jiān)控,比如追蹤錯(cuò)誤請(qǐng)求的整個(gè)調(diào)用鏈路排查問題。
4.鏈路數(shù)據(jù)也可以用于應(yīng)用性能監(jiān)控(APM),追蹤每個(gè)服務(wù)的響應(yīng)時(shí)間分布找出慢服務(wù)。
5.分布式追蹤需要考慮大量分布式調(diào)用產(chǎn)生的高并發(fā)壓力,選擇性能優(yōu)異的追蹤系統(tǒng)實(shí)現(xiàn)。
6.鏈路數(shù)據(jù)可以通過機(jī)器學(xué)習(xí)算法進(jìn)行分析,自動(dòng)學(xué)習(xí)出正常調(diào)用模式,找出異常調(diào)用路徑。
7.鏈路ID的傳播需要考慮多種語(yǔ)言和協(xié)議的兼容,保證ID的上下文傳遞。
8.鏈路數(shù)據(jù)的存儲(chǔ)和查詢也是一個(gè)重要問題,需要考慮大規(guī)模分布式追蹤數(shù)據(jù)的處理能力。
9.鏈路采樣是一種常用優(yōu)化手段,只對(duì)部分請(qǐng)求進(jìn)行詳細(xì)追蹤,降低系統(tǒng)壓力。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-805057.html
以上內(nèi)容給出了分布式鏈路追蹤在數(shù)據(jù)收集、展示、應(yīng)用等方面的一些進(jìn)一步思路,對(duì)系統(tǒng)設(shè)計(jì)和優(yōu)化很有幫助。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-805057.html
到了這里,關(guān)于分布式系統(tǒng)中的分布式鏈路追蹤與分布式調(diào)用鏈路的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!