V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bigbigdata
V2EX  ›  PHP

php + finagle thrift + zipkin,所有的请求都在一个 trace 当中,怎么解?

  •  
  •   bigbigdata · 2016-12-15 19:17:08 +08:00 · 3313 次点击
    这是一个创建于 2901 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目主体采用 php ,正在逐步向服务化过度。

    服务采用 java 实现,部分基于 http ,还有一部分采用 apache thrift 。

    后被 finagle 的特性吸引,想把整个服务体系迁移到 finagle 框架之下。

    当 php 和 finagle thrift 结合的时候,遇到了如下问题:

    用 Twitter 的官方工具 scrooge 可以方便的生成 finagle thrift 代码,然而并不能生成 php 版本的 finagle thrift client 。

    虽然 apache thrift php client 仍然可以正常与 finagle thrift sever 通信,但是不能提供 finagle header 信息,其中包括 traceid 。 finagle sever 在接收到 php client 传递过来的请求之后,找不到 traceid ,就会默认生成一个,并且会把这个 traceid 保存到 sever 的上下文环境当中。所有的请求,都会共享相同的 traceid ,这就导致发送给 zipkin 的所有 trace 请求都在同一个 trace 当中。

    server 端默认的 traceid 是通过 TraceInitializerFilter 生成的, trace 的操作是请求到达时最先触发的,没办法通过附加其他的 filter 来改变 traceid ,似乎 finagle 也没有提供扩展,让我们能自定义 server 端 traceid 的生成方式。

    不知道是否有人尝试过 php + finagle thrift 这种搭配,有没有遇到过类似问题, 除了改写 finagle 的代码之外,是否还有什么更好的解决方案呢?

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5882 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 03:37 · PVG 11:37 · LAX 19:37 · JFK 22:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.