作為可觀測(cè)性體系之一的分布式追蹤一直是一個(gè)備受爭(zhēng)議的話題。作為過(guò)去每屆 全球知名大會(huì) KubeCon 以及國(guó)內(nèi)各種技術(shù)峰會(huì)所扯的老牌技術(shù),曾一度被寄予厚望,被認(rèn)為會(huì)徹底改變系統(tǒng)觀測(cè)認(rèn)知。然而,五年已經(jīng)過(guò)去了。。。
通常來(lái)講,分布式跟蹤是一種在分布式系統(tǒng)和微服務(wù)中傳播的請(qǐng)求,生成有關(guān)這些請(qǐng)求的高質(zhì)量數(shù)據(jù),并使其可供分析的方法。
分布式追蹤(Distributed Tracing)是一種用于監(jiān)測(cè)分布式系統(tǒng)中請(qǐng)求流程的技術(shù)。它可以追蹤一個(gè)請(qǐng)求在不同的微服務(wù)中的執(zhí)行情況,并將這些信息整合到一個(gè)完整的請(qǐng)求鏈路圖中,以便于監(jiān)測(cè)和調(diào)試。分布式追蹤通常通過(guò)在請(qǐng)求的不同階段插入唯一的標(biāo)識(shí)符(例如 Trace ID 和 Span ID 等)來(lái)實(shí)現(xiàn)。這些標(biāo)識(shí)符隨著請(qǐng)求的傳遞,會(huì)在不同的微服務(wù)之間傳遞,用于標(biāo)記請(qǐng)求的不同階段,從而構(gòu)建完整的請(qǐng)求鏈路圖。
分布式跟蹤對(duì)于監(jiān)控、調(diào)試和優(yōu)化分布式軟件架構(gòu)至關(guān)重要,特別是在動(dòng)態(tài)微服務(wù)架構(gòu)中,因?yàn)樗兄趫F(tuán)隊(duì)更快地了解每個(gè)微服務(wù)的性能。
分布式跟蹤的工作原理是跟蹤通過(guò)分布式系統(tǒng)的請(qǐng)求流,并在請(qǐng)求通過(guò)各種服務(wù)和組件時(shí)收集有關(guān)請(qǐng)求每個(gè)步驟的數(shù)據(jù)。 然后,該數(shù)據(jù)用于構(gòu)建請(qǐng)求過(guò)程(從初始請(qǐng)求到最終響應(yīng))的完整畫面。
為了實(shí)現(xiàn)這一點(diǎn),分布式跟蹤通常依賴于使用唯一標(biāo)識(shí)符,例如跟蹤 ID 和跨度 ID,這些標(biāo)識(shí)符附加到每個(gè)請(qǐng)求,并在請(qǐng)求遍歷不同服務(wù)時(shí)通過(guò)系統(tǒng)傳遞。 這些標(biāo)識(shí)符允許跟蹤系統(tǒng)將請(qǐng)求的每個(gè)步驟與整個(gè)請(qǐng)求鏈關(guān)聯(lián)起來(lái),即使它通過(guò)不同的服務(wù)和組件也是如此。
在典型的分布式跟蹤系統(tǒng)中,通常由三個(gè)主要組件組成:追蹤代理(Tracing Agent)、追蹤收集器(Tracing Collector)和追蹤存儲(chǔ)(Tracing Storage)三個(gè)主要組件協(xié)同工作來(lái)跟蹤請(qǐng)求
作為在分布式系統(tǒng)中的每個(gè)服務(wù)或組件上運(yùn)行的軟件組件,追蹤代理主要負(fù)責(zé)收集有關(guān)通過(guò)它們的請(qǐng)求的數(shù)據(jù)。 追蹤代理通常將跟蹤和跨度 ID 添加到請(qǐng)求標(biāo)頭,并將此信息發(fā)送到追蹤收集器。
追蹤收集器組件從跟蹤代理接收追蹤數(shù)據(jù)并將其聚合成完整的請(qǐng)求跟蹤,然后負(fù)責(zé)關(guān)聯(lián)不同服務(wù)和組件之間的追蹤和跨度 ID,以構(gòu)建請(qǐng)求旅程的完整畫面。
追蹤存儲(chǔ)組件為存儲(chǔ)追蹤數(shù)據(jù)以供以后檢索和分析的組件,主要用于診斷問(wèn)題、優(yōu)化性能并深入了解分布式系統(tǒng)的整體行為。
分布式追蹤在實(shí)際業(yè)務(wù)場(chǎng)景中通常是獨(dú)一無(wú)二的,因?yàn)樗鼘W⒂谡?qǐng)求作為可觀察性的單元。在監(jiān)控和度量平臺(tái)中,通常以組件(如服務(wù)和主機(jī))作為被觀察的基本單位。這些平臺(tái)可以提供有關(guān)整個(gè)組件隨時(shí)間的行為的信息,例如在特定時(shí)間范圍內(nèi)該服務(wù)的健康狀況、吞吐量和錯(cuò)誤率。
相比之下,日志的被觀察單位是事件。例如,當(dāng)代碼執(zhí)行期間出現(xiàn)事件時(shí),可以打印一些信息。這些事件是開發(fā)人員在編寫代碼時(shí)主觀定義的。然而,日志的挑戰(zhàn)在于它們通常是脫節(jié)的,每個(gè)組件都單獨(dú)打印自己的日志消息,沒(méi)有簡(jiǎn)單的方法將它們連接在一起,以便形成有意義的整體視圖。
相對(duì)地,分布式追蹤的被觀察單位是單個(gè)請(qǐng)求,因?yàn)樗诙鄠€(gè)組件之間遍歷。這使得我們能夠?qū)φ麄€(gè)分布式系統(tǒng)進(jìn)行查詢,并了解在一個(gè)復(fù)雜、互聯(lián)的系統(tǒng)中發(fā)生了什么。這種可觀察性的單元使分布式追蹤成為了一種強(qiáng)大的工具,可以幫助開發(fā)人員快速診斷問(wèn)題、優(yōu)化性能和改進(jìn)可維護(hù)性。
通常而言,借助分布式追蹤,我們能夠?qū)崿F(xiàn):
分布式應(yīng)用程序通常由多個(gè)服務(wù)和組件組成,當(dāng)出現(xiàn)問(wèn)題時(shí),需要快速定位問(wèn)題所在,并診斷問(wèn)題的根本原因。分布式追蹤可以幫助開發(fā)人員快速診斷問(wèn)題,因?yàn)樗峁┝嗽敿?xì)的請(qǐng)求鏈路信息,可以直接指出問(wèn)題所在。
分布式追蹤可以提供應(yīng)用程序的全面視圖,包括不同服務(wù)和組件之間的相互作用。這有助于開發(fā)人員更好地理解應(yīng)用程序的結(jié)構(gòu)和功能,并改進(jìn)其可維護(hù)性。
現(xiàn)代應(yīng)用程序通常由多個(gè)服務(wù)和組件組成,這些服務(wù)和組件之間的相互作用非常復(fù)雜。分布式追蹤可以提供完整的請(qǐng)求鏈路信息,并幫助開發(fā)人員了解系統(tǒng)中不同組件之間的相互作用,從而更好地理解系統(tǒng)的行為和性能。
一句話總結(jié):
“分布式跟蹤的基本情況在于,圍繞請(qǐng)求的這種方向最接近最終用戶的體驗(yàn)。因此,對(duì)于我們?nèi)绾螜z查和排除分布式架構(gòu)的故障來(lái)說(shuō),這也是最直觀的。”
在實(shí)際的業(yè)務(wù)場(chǎng)景中,分布式追蹤在企業(yè)的落地及應(yīng)用往往因?yàn)楦鞣N各樣的因素導(dǎo)致面臨各種問(wèn)題,具體如下:
實(shí)施分布式追蹤可能會(huì)面臨一些挑戰(zhàn)。為了實(shí)現(xiàn)分布式追蹤,我們需要對(duì)代碼進(jìn)行修改和發(fā)布。雖然代碼修改是實(shí)現(xiàn)可觀察性的共同要求,但是分布式追蹤的挑戰(zhàn)在于,為了獲得分布式追蹤,每個(gè)服務(wù)或組件都需要進(jìn)行工具化,否則跟蹤將中斷。
這意味著在實(shí)施分布式追蹤之前,我們需要對(duì)每個(gè)服務(wù)或組件進(jìn)行儀器化,以便收集有關(guān)請(qǐng)求的跟蹤信息,并將其傳遞給追蹤系統(tǒng)。這可能需要一些額外的工作,包括修改現(xiàn)有代碼、添加新的跟蹤代碼和重新部署應(yīng)用程序。此外,由于每個(gè)服務(wù)或組件都需要進(jìn)行儀器化,這可能會(huì)導(dǎo)致一些復(fù)雜性和維護(hù)成本的增加
盡管分布式跟蹤在分布式系統(tǒng)中的可觀察性和問(wèn)題排查方面有很大的優(yōu)勢(shì),但在某些情況下,分布式跟蹤的價(jià)值可能會(huì)被削弱,最大的障礙在于高昂的成本。實(shí)施分布式跟蹤需要對(duì)每個(gè)服務(wù)和組件進(jìn)行工具化,這可能會(huì)導(dǎo)致額外的成本和復(fù)雜性。如果在實(shí)施分布式跟蹤之前沒(méi)有考慮好成本和收益,那么分布式跟蹤的價(jià)值可能會(huì)被削弱
第二個(gè)在于團(tuán)隊(duì)的技術(shù)儲(chǔ)備,團(tuán)隊(duì)的技術(shù)儲(chǔ)備對(duì)實(shí)施分布式追蹤的影響是十分重要的。實(shí)施分布式追蹤需要對(duì)分布式系統(tǒng)進(jìn)行儀器化,以便收集請(qǐng)求的跟蹤信息,并將其傳遞給追蹤系統(tǒng)。這需要對(duì)現(xiàn)有代碼進(jìn)行修改,并添加新的跟蹤代碼,并且需要在不影響系統(tǒng)功能的情況下進(jìn)行部署。如果團(tuán)隊(duì)缺乏實(shí)施分布式追蹤所需的技術(shù)儲(chǔ)備,那么實(shí)施分布式追蹤可能會(huì)變得困難。
在實(shí)施分布式追蹤時(shí),抽樣決策是一個(gè)重要的考慮因素。由于分布式追蹤會(huì)產(chǎn)生大量的跟蹤數(shù)據(jù),因此需要采用抽樣技術(shù)來(lái)減少數(shù)據(jù)量,以避免存儲(chǔ)和處理方面的問(wèn)題。但是,抽樣決策的復(fù)雜性會(huì)影響實(shí)施分布式追蹤的效果,主要涉及抽樣決策的準(zhǔn)確性、復(fù)雜性以及一致性。
抽樣決策的準(zhǔn)確性直接影響到跟蹤數(shù)據(jù)的質(zhì)量。如果抽樣決策過(guò)于簡(jiǎn)單或不準(zhǔn)確,那么可能會(huì)忽略重要的請(qǐng)求路徑,導(dǎo)致無(wú)法正確診斷問(wèn)題。
抽樣決策的復(fù)雜性也會(huì)影響到實(shí)施分布式追蹤的效果。如果抽樣決策過(guò)于復(fù)雜,那么可能會(huì)增加實(shí)施分布式追蹤的難度,導(dǎo)致實(shí)施時(shí)間和成本的增加。
在分布式系統(tǒng)中,不同服務(wù)和組件可能會(huì)使用不同的抽樣策略,這可能會(huì)導(dǎo)致跟蹤數(shù)據(jù)的不一致性。如果不同組件使用不同的抽樣策略,那么可能會(huì)導(dǎo)致跟蹤數(shù)據(jù)的缺失或重疊,從而影響跟蹤數(shù)據(jù)的質(zhì)量。
當(dāng)然,除了上面核心的因素外,還有其他可觀因素,此處咱不贅述。
隨著分布式系統(tǒng)的普及和應(yīng)用場(chǎng)景的增多,分布式追蹤的未來(lái)發(fā)展前景非常廣闊。分布式追蹤將成為分布式系統(tǒng)可觀測(cè)性的核心工具之一,并且將在以下方面發(fā)揮更大的作用:
1、自動(dòng)化:隨著人工智能和機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,分布式追蹤將越來(lái)越自動(dòng)化。例如,可以使用機(jī)器學(xué)習(xí)來(lái)自動(dòng)識(shí)別異常行為和性能問(wèn)題,并提供自動(dòng)化的問(wèn)題排查和修復(fù)建議。
2、效率:分布式追蹤將成為分布式系統(tǒng)管理的重要工具之一。通過(guò)對(duì)系統(tǒng)的全面監(jiān)控和診斷,分布式追蹤能夠提高系統(tǒng)的效率和穩(wěn)定性,并減少故障排查的時(shí)間和成本。
3、安全:分布式追蹤將成為安全領(lǐng)域的重要工具之一。通過(guò)監(jiān)控和分析請(qǐng)求的路徑和數(shù)據(jù)流,分布式追蹤能夠識(shí)別潛在的安全漏洞和攻擊,并提供及時(shí)的響應(yīng)和修復(fù)建議。
4、標(biāo)準(zhǔn)化:分布式追蹤將越來(lái)越標(biāo)準(zhǔn)化,以便不同供應(yīng)商和廠商的系統(tǒng)可以無(wú)縫地集成和互操作。例如,OpenTelemetry 就是一個(gè)流行的開放標(biāo)準(zhǔn),用于實(shí)現(xiàn)分布式追蹤和度量。
總之,分布式追蹤的未來(lái)發(fā)展前景非常廣闊。隨著技術(shù)的進(jìn)步和需求的增長(zhǎng),分布式追蹤將成為分布式系統(tǒng)可觀察性的核心工具之一,并在自動(dòng)化、效率、安全和標(biāo)準(zhǔn)化等方面發(fā)揮更大的作用。
本文鏈接:http://www.www897cc.com/showinfo-26-10890-0.html一文讀懂分布式追蹤:過(guò)去、現(xiàn)在和未來(lái)
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com