分布式链路追踪Java实战2

📅 2026/8/6 18:37:21
分布式链路追踪Java实战2
第2章 上下文传播机制学习目标理解为什么分布式系统需要上下文传播,以及它解决的核心问题掌握W3C Trace Context标准及其traceparent/tracestate的报文结构能够使用OpenTelemetry Java API实现跨HTTP服务、跨线程的上下文传播2.1 一个真实的故事:trace莫名其妙断了去年,我参与的一个支付平台项目遇到了一个棘手的线上问题。某天下午,运维反馈说支付成功率从99.9%降到了97%。我们打开链路追踪系统,发现一条典型的失败请求链路是这样的:网关 (200ms) → 订单服务 (150ms) → ? → ? → 支付结果未知trace在订单服务调用支付服务的地方断掉了。下游的所有span全部消失,就像是请求凭空消失了一样。排查了整整一天,最终定位到问题:HTTP头名字不一致。网关服务往订单服务传递trace时用的是traceparent头,但订单服务调用支付服务时,支付服务内部使用的老版本OpenTelemetry Agent期望的是x-request-id头。两边对不上,支付服务收不到trace上下文,创建了一个全新的root span——于是链路断了。修复方案:在网关层