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

2016-12-15 19:17:08 +08:00
 bigbigdata

项目主体采用 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 的代码之外,是否还有什么更好的解决方案呢?

3255 次点击
所在节点    PHP
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/327907

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX