PHP ---> springcloud trackid 透传

最近遇到的需求是 php端调用 spring cloud 提供的http 接口。 需要把php端的生成的trackid 透传到spring cloud。

1. 了解MDC:https://logback.qos.ch/manual/mdc.html

其实就是把自定义属性放入MDC, 然后在logback 里面用设置 %X{自定义属性名字}  就能打印出来。

2. 了解spring cloud trackid 透传原理

 1. springcloud 有一个前置filter, 目的从request header 获取X-Span-Export;X-B3-ParentSpanId;X-B3-TraceId;X-B3-SpanId 这个4个熟悉, 如果没有值的话 就自动生成, 然后放入trackcontext,接着从trackcontext获取属性放入 MDC

 2.在处理自己的业务逻辑的时候, 就打印放入MDC 里面的自定义属性。

3.业务逻辑处理结束后, 有一个后置拦截器。从trackcontext把属性获取出来放入request header。 传入下一个请求。就这样下一个请求也从步骤一开始, 从header 获取相关属性。

要解决php trackid 透传到spring cloud。方案有两种

第一种:

创建一个filter, 过滤前段请求, 获取来自php端 traceidFromPHP, 然后放入MDC。

创建一个ClientHttpRequestInterceptor。从MDC拿出traceidFromPHP 放入Request header 。

第二种方案:

PHP 兼容spring cloud, 在调用spring cloud 接口的时候,直接把X-Span-Export;X-B3-ParentSpanId;X-B3-TraceId;X-B3-SpanId 放入header 即可。注意 名字要一模一样, 生成id的策略要和spring cloud 一直。php 应该有对应的组件。

你可能感兴趣的:(PHP ---> springcloud trackid 透传)