网关全链路灰度标透传:Header 在 Feign 调用中丢失?ThreadLocal + RequestInterceptor 完美接力!
做过微服务灰度发布的同学肯定都遇到过这个问题:在网关层设置了灰度标记 Header,但经过 Feign 调用后,这个 Header 就神秘消失了。导致后端服务无法正确识别灰度流量,灰度发布变成了全量发布,引发线上事故。 我之前就遇到过这样一个案例:业务同学做灰度发布,在网关层设置了 X-Gray-Group: v2 的 Header,但经过几次 Feign 调用后,这个标记就丢失了。结果新版本的代码被所有用户访问到,导致部分用户看到了未完成的功能,影响了业务体验。 今天我们就来聊聊全链路灰度标透传的解决方案,让您的灰度标记在整个调用链路上畅通无阻。 灰度标丢失的根本原因 1. HTTP 请求头不会自动传递 这是最核心的问题: 调用链: 网关 → Service A → Service B → Service C 问题场景: 1. 用户请求到达网关,设置了 X-Gray-Group: v2 2. 网关调用 Service A,Header 传递成功 3. Service A 调用 Service B,Header 丢失! 4. Service B 调用 Service C,没有灰度标记 ....