五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

使用 OpenTelemetry 構(gòu)建可觀測(cè)性 05 - 傳播和行李(Propagation & Baggage

2023-08-24 09:22 作者:SRETalk  | 我要投稿

我們開(kāi)發(fā)的應(yīng)用程序可能具有不同的形態(tài)和架構(gòu):有些是單體應(yīng)用,有些是微服務(wù)。為單體應(yīng)用程序添加遙測(cè)數(shù)據(jù)相對(duì)來(lái)說(shuō)簡(jiǎn)單,因?yàn)樗袛?shù)據(jù)都在同一進(jìn)程中。然而對(duì)于微服務(wù)應(yīng)用程序,情況可能會(huì)更具挑戰(zhàn)性。

通常,分布式微服務(wù)應(yīng)用程序的不同服務(wù)之間僅通過(guò)網(wǎng)絡(luò)連接。然而,當(dāng)我們想要?jiǎng)?chuàng)建有效的鏈路追蹤數(shù)據(jù),就要考慮到下面的問(wèn)題:

即使是微服務(wù)應(yīng)用程序,我們也希望觀察到從開(kāi)始到結(jié)束的用戶路徑,這意味著跨越多個(gè)服務(wù)的邊界。這就是我們所說(shuō)的分布式鏈路追蹤。不過(guò)我們?nèi)绾螌?shí)現(xiàn)這一點(diǎn)呢?我們?nèi)绾问规溌纷粉櫺畔⒇灤┛赡苁欠植荚诙鄠€(gè)進(jìn)程,并且是不同的基礎(chǔ)架構(gòu)上呢?

傳播( propagation )

在 OpenTelemetry 中,解決這個(gè)挑戰(zhàn)的方案是通過(guò)傳播來(lái)實(shí)現(xiàn)。這意味著以某種方式將鏈路追蹤 ID(和父跨度 ID)傳遞給被調(diào)用服務(wù),以便它們可以將該信息添加到分布式鏈路追蹤路徑中的一個(gè)跨度上。下面是一個(gè)示意圖:

這里我們有三個(gè)服務(wù),通過(guò)使用傳播,我們能夠?qū)⒏?ID 和父跨度 ID 作為頭信息傳遞。在 Go 中,傳播可以通過(guò)全局設(shè)置來(lái)處理:

在示例代碼中,我們可以在控制器層(Handler,通常用于處理HTTP請(qǐng)求并生成相應(yīng)的響應(yīng),承擔(dān)的作用包括路由和請(qǐng)求分發(fā),請(qǐng)求處理邏輯,響應(yīng)生成)進(jìn)行設(shè)置:

當(dāng)從一個(gè)服務(wù)發(fā)送 HTTP 請(qǐng)求到另一個(gè)服務(wù)時(shí),可通過(guò)?otelhttp?庫(kù)的輔助函數(shù)來(lái)創(chuàng)建和管理分布式追蹤的跨度對(duì)象:

行李(Baggage)

從上圖中可以看出??service 1?生成了一些數(shù)據(jù)?attr1?。這些與?service 1?相關(guān)的數(shù)據(jù)可能要添加到?service 2?或?service 3?所在跨度對(duì)象的屬性中。由于這些服務(wù)可能無(wú)法直接訪問(wèn)此數(shù)據(jù),在 OpenTelemetry 中是通過(guò)行李來(lái)解決這個(gè)問(wèn)題。行李本質(zhì)上是攜帶額外信息的鍵值對(duì),通過(guò)請(qǐng)求傳遞數(shù)據(jù)給不同服務(wù)和組件。

在 Go 中,我們可以通過(guò)以下方式添加行李信息:

?

這樣設(shè)置后我們的 HTTP 請(qǐng)求將包括?req.addr?行李 。

后續(xù)消費(fèi)端的服務(wù)(在圖中,這可能是?service 2?或?service 3?),就可以從請(qǐng)求上下文中解析行李:

此代碼解析行李信息,并將其作為當(dāng)前跨度的屬性添加進(jìn)去。

示例

經(jīng)過(guò)之前對(duì)傳播和行李的討論,現(xiàn)在讓我們看看 OpenTelemetry 如何發(fā)送這些數(shù)據(jù)。在示例的購(gòu)物車應(yīng)用程序中,如果我發(fā)出請(qǐng)求并從價(jià)格服務(wù)或用戶服務(wù)中查看請(qǐng)求頭,將會(huì)看到以下兩行信息:

Baggage: req.addr=10.244.0.11%3A60086 Traceparent: 00-9861e8c7b097206fed82e0f6b379aae0-4aa019606aed70b6-01

請(qǐng)求頭?Traceparent?是鏈路追蹤 ID(本例中是“9861e8c7b097206fed82e0f6b379aae0”)和父跨度 ID (“4aa019606aed70b6”)。還有一個(gè)?Baggage?,其中包括在請(qǐng)求發(fā)起的源服務(wù)(購(gòu)物車服務(wù)),它被添加到?req.addr?行李中。下圖可以看到?req.addr?行李在用戶服務(wù)中被引用:

總結(jié)

在 OpenTelemetry 中通過(guò)使用傳播和行李,很好的解決了“分布式鏈路追蹤”中“分布式”的問(wèn)題。這樣可以幫助您獲取更有價(jià)值的鏈路追蹤數(shù)據(jù)!

本文翻譯自:https://trstringer.com/otel-part5-propagation/

擴(kuò)展閱讀:

  • 方法論:面向故障處理的可觀測(cè)性體系建設(shè)(https://flashcat.cloud/blog/construction-of-observability-system-for-fault-processing/)

  • 白皮書(shū):事件 OnCall 中心建設(shè)方法(https://download.flashcat.cloud/flashduty-white-paper-v1.pdf)

  • 好工具:FlashDuty - 一站式告警處理平臺(tái):告警降噪、排班OnCall(https://flashcat.cloud/product/flashduty/)


使用 OpenTelemetry 構(gòu)建可觀測(cè)性 05 - 傳播和行李(Propagation & Baggage的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
平原县| 津南区| 阿拉善盟| 兴仁县| 长丰县| 榆林市| 新晃| 阜城县| 安庆市| 盐池县| 西安市| 区。| 都江堰市| 郁南县| 平南县| 广州市| 永康市| 炎陵县| 通化县| 西宁市| 化州市| 霍林郭勒市| 甘德县| 蓝山县| 藁城市| 西林县| 德惠市| 呈贡县| 于都县| 东至县| 桓台县| 新安县| 咸阳市| 元江| 利津县| 嵊泗县| 赤峰市| 来凤县| 玉树县| 库车县| 宁陵县|