首页/云/可观测性速查/Baggage:随链路传播的业务上下文

Baggage:随链路传播的业务上下文

Baggage 携带跨服务共享的键值(如租户、灰度标记),随请求一路传递;数据量小、无敏感信息是使用底线。

可观测性速查云更新于 2026-10-13

Baggage 是什么

Baggage 是随请求在服务之间传播的键值对,属于分布式追踪上下文的扩展部分:调用方把租户、灰度标记、实验分组这类信息写进 baggage,下游服务无需改接口就能读到,可以据此给链路打标、筛选日志或决定采样策略。它随每次调用一路传递,内容必须小、稳定、不敏感。

基本信息

传播载体HTTP 使用 baggage 请求头,gRPC 走 metadata
规范依据W3C Baggage 规范,与 trace 上下文配套使用
可见范围完整链路上每个服务都可读取
常见取值租户标识、灰度标记、实验分组、请求来源

传播格式与用法

传播格式与用法
# HTTP 头:多个键值对用逗号分隔
baggage: tenant=acme,gray=1,experiment=exp-42

# 读取后可作为 span 属性或日志字段,用于统一筛选
# OpenTelemetry 中通过 baggage API 读写,随上下文自动传播
# 注意:baggage 对每个下游都可见,不要放密码或令牌

使用边界

方面建议原因
数据量控制条目数量与值长度每个下游都要解析,头过大放大每跳开销
内容性质只放观测用途的标记当配置通道用会引入隐式耦合
敏感信息禁止放入链路上任何服务都能读到
生命周期随请求结束失效不承担状态职责,不作为数据来源

典型使用场景

  • 按租户维度过滤链路,定位单个客户的性能问题
  • 给灰度流量打标,让灰度请求单独采样与观察
  • 在日志里补充背景信息,让日志与链路互相印证
  • 按实验分组对比链路指标,评估新逻辑的实际影响
baggage 与 trace 头分工不同:trace 头负责串联调用关系,baggage 负责携带业务上下文,跨服务调用时两者都需要正确透传。
baggage 值过长会抬高每个请求的头开销,条目数量与长度都要设上限,建议在网关侧做校验与截断。
调试时逐跳排查:先在入口确认 baggage 已写入,再确认下游是否读到,定位是哪一跳没有透传上下文。

易错点

  • 把它当跨服务配置通道会引入隐式耦合,只放观测用途的标记
  • 把令牌或用户隐私写进 baggage,链路上任何一跳都能读到
  • 下游框架未配置透传,baggage 在某一跳静默丢失导致筛选结果不全
  • 值长度与条目数不设上限,单个请求的头被撑大,网关与代理开销上升

数据来源与参考

  • W3C Baggage 规范
  • OpenTelemetry 官方文档 · Baggage
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌