關(guān)于OpenTracing

一、OpenTracing是什么

OpenTracing是一種分布式系統(tǒng)鏈路跟蹤的設(shè)計(jì)原則、規(guī)范、標(biāo)準(zhǔn)。
傳統(tǒng)的監(jiān)控包括業(yè)務(wù)指標(biāo)監(jiān)控、服務(wù)質(zhì)量監(jiān)控等,只能對(duì)業(yè)務(wù)能的整體性能進(jìn)行監(jiān)控,而隨著微服務(wù)和分布式的盛行,一個(gè)業(yè)務(wù)系統(tǒng)會(huì)由很多個(gè)服務(wù)組成,服務(wù)之間會(huì)進(jìn)行相互調(diào)用。每一個(gè)前端請(qǐng)求都會(huì)形成一個(gè)復(fù)雜的分布式服務(wù)調(diào)用鏈路。這將導(dǎo)致的問(wèn)題是:

  • 出問(wèn)題后難以定位問(wèn)題
  • 無(wú)法準(zhǔn)確獲取系統(tǒng)的整體性能和運(yùn)行情況
  • 無(wú)法獲取對(duì)服務(wù)之間的調(diào)用關(guān)系

分布式鏈路追蹤技術(shù)應(yīng)運(yùn)而生,但是要讓自己的應(yīng)用支持分布式跟蹤太難了!不僅需要在進(jìn)程內(nèi)進(jìn)行跟蹤數(shù)據(jù)的傳遞,還要在進(jìn)程之間傳遞。更難的是,還需要其他組件對(duì)分布式跟蹤的支持,其中包括:

  • 開源的服務(wù)(比如NGINX, Cassandra, Redis,Mysql)
  • 在服務(wù)內(nèi)引入的開源庫(kù)(比如 grpc, ORMs)
  • 已有的業(yè)務(wù)邏輯

解決辦法是制定一個(gè)統(tǒng)一的標(biāo)準(zhǔn),然后讓大家都遵守這個(gè)標(biāo)準(zhǔn)來(lái)實(shí)現(xiàn)分布式跟蹤信息的描述和傳遞。這樣只要使用的是按照標(biāo)準(zhǔn)實(shí)現(xiàn)的服務(wù),就能夠進(jìn)行完整的分布式跟蹤。這個(gè)標(biāo)準(zhǔn)就是OpenTracing。

二、OpenTracing做了什么

OpenTracing實(shí)現(xiàn)了:

  • 后臺(tái)無(wú)關(guān)的一套接口,被跟蹤的服務(wù)只需要調(diào)用這套接口,就可以被任何實(shí)現(xiàn)這套接口的跟蹤后臺(tái)(比如Zipkin, Jaeger等等)支持,而作為一個(gè)跟蹤后臺(tái),只要實(shí)現(xiàn)了個(gè)這套接口,就可以跟蹤到任何調(diào)用這套接口的服務(wù)
  • 標(biāo)準(zhǔn)化了對(duì)跟蹤最小單位Span的管理:定義了開始Span,結(jié)束Span和記錄Span耗時(shí)的API。Span的定義可以參照開源分布式跟蹤系統(tǒng)Zipkin介紹(架構(gòu)篇)
  • 標(biāo)準(zhǔn)化了進(jìn)程間跟蹤數(shù)據(jù)傳遞的方式:定義了一套API方便跟蹤數(shù)據(jù)的傳遞
  • 標(biāo)準(zhǔn)化了進(jìn)程內(nèi)當(dāng)前Span的管理:定義了存儲(chǔ)和獲取當(dāng)前Span的API

OpenTracing沒有實(shí)現(xiàn):

  • 不對(duì)進(jìn)程間傳遞的跟蹤數(shù)據(jù)的編碼定標(biāo)準(zhǔn)
  • 不對(duì)向后臺(tái)發(fā)送的跟蹤數(shù)據(jù)的編碼定標(biāo)準(zhǔn)
  • 原因:讓跟蹤后臺(tái)自己決定最適合他們的編碼方式

三、OpenTracing的架構(gòu)

OpenTracing架構(gòu)圖


250782_720w.jpeg
  • 應(yīng)用代碼和開源控件寫代碼調(diào)用一套抽象出來(lái)的OpenTracing API(淺綠色的那一塊)。而實(shí)現(xiàn)OpenTracing API的代碼庫(kù)(深綠色的那一塊)則負(fù)責(zé)緩存和編碼跟蹤數(shù)據(jù),以及進(jìn)程間跟蹤數(shù)據(jù)的上下文信息,以及如何和它自己的后臺(tái)系統(tǒng)進(jìn)行通信
  • 通過(guò)這樣的一種方式,應(yīng)用代碼就可以隨意的更換OpenTracing的實(shí)現(xiàn)而不用改一行自己的代碼。比如如果自己用Zipkin用得不爽了,就可以換到Jaeger后臺(tái)。如果一開始直接調(diào)用Zipkin的API而不是OpenTracing的API,那么要換到Jaeger后臺(tái)就得把所有調(diào)用Zipkin API的地方都換成調(diào)用Jaeger API,而OpenTracing免除了這方面的工作
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在微服務(wù)架構(gòu)中,調(diào)用鏈?zhǔn)锹L(zhǎng)而復(fù)雜的,要了解其中的每個(gè)環(huán)節(jié)及其性能,你需要全鏈路跟蹤。 它的原理很簡(jiǎn)單,你可以在每...
    倚天碼農(nóng)閱讀 1,104評(píng)論 0 0
  • 在微服務(wù)架構(gòu)中,調(diào)用鏈?zhǔn)锹L(zhǎng)而復(fù)雜的,要了解其中的每個(gè)環(huán)節(jié)及其性能,你需要全鏈路跟蹤。它的原理很簡(jiǎn)單,你可以在每個(gè)...
    51reboot閱讀 1,016評(píng)論 0 1
  • 普元推出DevOps系列課程,5分鐘秒懂一個(gè)知識(shí)點(diǎn),戳“閱讀原文”充電5分鐘,掌握黑科技。 轉(zhuǎn)載本文需注明出處:微...
    72a1f772fe47閱讀 4,643評(píng)論 0 0
  • 我非常佩服那些意志力很堅(jiān)定的人,早上七點(diǎn)起床,做運(yùn)動(dòng), 然后練習(xí)口語(yǔ),早餐,然后上班。晚上回到家做頓晚餐,飯后...
    向陽(yáng)的彩虹閱讀 212評(píng)論 0 1
  • 一夜枯枝生新芽, 半日江湖難偷閑。 一壺清茶客幾人, 半間陋室天地寬。
    故事王閱讀 393評(píng)論 0 1

友情鏈接更多精彩內(nèi)容