SpringCloud 傳播Span上下文

2023-12-01 15:49 更新

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

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

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

以下示例顯示跨度設置行李:

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

行李與Span標簽

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

 從Sleuth 2.0.0開始,您必須在項目配置中顯式傳遞行李密鑰名稱。在此處閱讀有關該設置的更多信息

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

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

 范圍必須在范圍內。

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

設置。 

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"));


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號