链路追踪详解(五):链路传播 Header 详解

目录

链路传播 Header 的作用

常见的三种链路传播 Header 标准

小结


链路追踪作为分布式系统中不可或缺的一部分,可以帮助开发和运维人员了解请求在系统中的流转链路,快速定位问题和识别性能瓶颈。而链路传播 Header 是实现跨服务调用链跟踪的关键机制,通过链路传播 Header,使得跟踪信息在不同服务间的透明传递,从而构建出完整的请求链路。

文章持续更新中,微信搜索【路多辛】阅读更多优质文章

链路传播 Header 的作用

在分布式系统中,请求通常会经过多个组件和服务。为了实现链路追踪,需要在请求流转过程中传递一些特定的 Header 信息。这些 Header 用于标识和关联不同服务之间的请求,从而构建完整的请求链路。这些 Header 如同“信使”,确保请求在跨越多个微服务时,上下文信息(如追踪ID、span ID等)能够被准确无误地传递下去。

链路传播 Header 的主要作用包括:

  • 传递 Trace ID 和 Span ID:确保每个服务都能识别和关联请求。
  • 传递采样决策:决定是否对请求进行采样和记录。
  • 传递上下文信息:传递与请求相关的上下文信息,如用户信息、请求参数等。

常见的三种链路传播 Header 标准

1、W3C Trace Context

W3C Trace Context 是一个开放标准,用于定义链路传播 Header 的格式和语义。旨在提供一种统一的方式,在不同的链路追踪系统和服务之间传递追踪信息,opentelemetry 就遵守了这个标准。W3C Trace Context 包括两个主要的 Header:

    • traceparent:用于传递 Trace ID、Span ID 和采样决策。
    • tracestate:用于传递与请求相关的上下文信息。

traceparent Header 的格式如下:

traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • 版本号(Version):前两位表示版本号,目前为 00。
  • Trace ID:接下来的 32 位表示 Trace ID。
  • Span ID:接下来的 16 位表示 Span ID。
  • 采样决策(Trace Flags):最后两位表示采样决策,01 表示采样,00 表示不采样。

tracestate Header 用于传递与请求相关的上下文信息。格式如下:

tracestate: congo=t61rcWkgMzE

tracestate Header 可以包含多个键值对,每个键值对由逗号分隔,每个键值对的格式为 key=value。

2、B3 Propagation

B3 Propagation 是由 Twitter 开发的一个链路传播 Header 标准,广泛应用于 Zipkin 等链路追踪系统。B3 Propagation 包括以下几个 Header:

  • X-B3-TraceId:传递 Trace ID。
  • X-B3-SpanId:传递 Span ID。
  • X-B3-ParentSpanId:传递父 Span ID。
  • X-B3-Sampled:传递采样决策。1 表示采样,0 表示不采样。
  • X-B3-Flags:传递调试标志。1 表示开启调试,0 表示关闭调试。

3、Jaeger Propagation

Jaeger 是一个开源的链路追踪系统,支持多种链路传播 Header 标准,包括 W3C Trace Context 和 B3 Propagation。Jaeger 还定义了一种自有的链路传播 Header 格式:

  • uber-trace-id:传递 Trace ID、Span ID、父 Span ID 和采样决策。

uber-trace-id Header 的格式如下:

uber-trace-id: 4bf92f3577b34da6a3ce929d0e0e4736:00f067aa0ba902b7:0020000000000001:01
  • Trace ID:前 32 位表示 Trace ID。
  • Span ID:接下来的 16 位表示 Span ID。
  • 父 Span ID:接下来的 16 位表示父 Span ID。
  • 采样决策:最后两位表示采样决策,01 表示采样,00 表示不采样。

小结

链路传播 Header 是实现效链路追踪的基础,通过一系列精心设计的 Header 字段,在服务间传递必要的追踪信息,为系统监控、故障排查和性能优化提供了强大支持。随着微服务架构的普及和云原生技术的发展,链路追踪的重要性日益凸显,深入理解和正确应用链路传播 Header,已成为现代软件开发与运维不可或缺的技能之一。

文章持续更新中,微信搜索【路多辛】阅读更多优质文章

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路多辛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值