上下文传播

链路能工作的关键

链路追踪能工作,关键在于上下文传播。

入口服务生成 trace_id,后续每次 HTTP、RPC、消息队列调用都要把它传下去。常见方式是放在请求头:

traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

传播的路径

客户端请求
  -> 网关:生成 trace_id
  -> 订单服务:接收并传递
  -> 支付服务:接收并传递
  -> MySQL:记录在慢查询日志里(可选)
  -> 消息队列:消息头携带 trace_id

断链的后果

如果某个服务没有继续传递 trace,上下游链路就会断开:

  • 前半段一个 trace,后半段另一个 trace。
  • 无法看到完整路径。
  • 慢请求无法定位到具体环节。

覆盖率监控

平台需要监控 trace 覆盖率,发现未接入或传播失败的服务:

  • 覆盖率 = 带 trace_id 的请求 / 总请求。
  • 新服务上线后,覆盖率应接近 100%。
  • 覆盖率下降,说明有服务断链。

一句话

链路追踪的关键是上下文传播:**trace_id 必须跨所有 HTTP、RPC、消息队列调用传递。**某处断链,链路就残缺——要用覆盖率监控来发现未接入或传播失败的服务。

发现内容有问题?

告诉我们哪里需要改进。