美文网首页
PHP ---> springcloud trackid 透传

PHP ---> springcloud trackid 透传

作者: 刘大平 | 来源:发表于2018-05-31 11:09 被阅读0次

    最近遇到的需求是 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 透传

          本文链接:https://www.haomeiwen.com/subject/olxqsftx.html