OpenTelemetry 传播器API
介绍
OpenTelemetry传播器API(Propagator API)是OpenTelemetry的核心组件之一,用于在分布式系统中跨服务边界传递上下文信息(如Trace ID、Span ID和Baggage)。它解决了微服务架构中请求链路跟踪和上下文共享的关键问题。
为什么需要传播器?
在分布式系统中,一个用户请求可能涉及多个服务。传播器确保这些服务共享相同的跟踪上下文,从而在监控工具中形成完整的调用链。
传播器的工作原理
传播器API主要处理两种操作:
- 注入(Inject):将上下文信息写入到传输载体(如HTTP头部)
- 提取(Extract):从传输载体中读取上下文信息
核心接口
OpenTelemetry提供了TextMapPropagator
接口,包含两个关键方法:
public interface TextMapPropagator {
// 将上下文注入到载体
<C> void inject(Context context, C carrier, TextMapSetter<C> setter);
// 从载体提取上下文
<C> Context extract(Context context, C carrier, TextMapGetter<C> getter);
}
内置传播器类型
OpenTelemetry提供了两种标准传播器:
-
W3C Trace Context(推荐)
- 标准格式:
traceparent
和tracestate
头部 - 示例:
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
- 标准格式:
-
B3 Propagation(Zipkin兼容)
- 包含
X-B3-TraceId
、X-B3-SpanId
等头部
- 包含