SpringCloud 傳播Span上下文

2023-12-01 15:49 更新

跨度上下文是必須跨進(jìn)程邊界傳播到任何子項(xiàng)spans的狀態(tài)。Span上下文的一部分是行李。跟蹤和跨度ID是跨度上下文的必需部分。行李是可選部件。

行李是存儲(chǔ)在span上下文中的一組key:value對(duì)。行李與蹤跡一起旅行,并附著在每個(gè)跨度上。Spring Cloud Sleuth理解,如果HTTP標(biāo)頭以baggage-為前綴,則標(biāo)頭與行李有關(guān),對(duì)于消息傳遞,標(biāo)頭以baggage_開頭。

 當(dāng)前對(duì)行李物品的數(shù)量或大小沒有限制。但是,請(qǐng)記住,太多會(huì)降低系統(tǒng)吞吐量或增加RPC延遲。在極端情況下,由于超出傳輸級(jí)消息或標(biāo)頭容量,過多的行李可能會(huì)使應(yīng)用程序崩潰。

以下示例顯示跨度設(shè)置行李:

Span initialSpan = this.tracer.nextSpan().name("span").start();
ExtraFieldPropagation.set(initialSpan.context(), "foo", "bar");
ExtraFieldPropagation.set(initialSpan.context(), "UPPER_CASE", "someValue");

行李與Span標(biāo)簽

行李隨身攜帶(每個(gè)孩子跨度都包含其父母的行李)。Zipkin不了解行李并且不接收該信息。

 從Sleuth 2.0.0開始,您必須在項(xiàng)目配置中顯式傳遞行李密鑰名稱。在此處閱讀有關(guān)該設(shè)置的更多信息

標(biāo)簽被附加到特定范圍。換句話說,它們僅針對(duì)該特定跨度顯示。但是,您可以按標(biāo)簽搜索以找到軌跡,前提是存在一個(gè)具有所搜索標(biāo)簽值的跨度。

如果您希望能夠基于行李查找跨度,則應(yīng)在根跨度中添加相應(yīng)的條目作為標(biāo)簽。

 范圍必須在范圍內(nèi)。

以下清單顯示了使用行李的集成測(cè)試:

設(shè)置。 

spring.sleuth:
  baggage-keys:
    - baz
    - bizarrecase
  propagation-keys:
    - foo
    - upper_case

編碼。 

initialSpan.tag("foo",
		ExtraFieldPropagation.get(initialSpan.context(), "foo"));
initialSpan.tag("UPPER_CASE",
		ExtraFieldPropagation.get(initialSpan.context(), "UPPER_CASE"));


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)