Closed LiZhenCheng9527 closed 1 month ago
尝试在请求头中注入唯一id,x-request-id:uuid
所以说多跳的调用链还是需要应用程序传递x-request-id。是这样吗?
所以说多跳的调用链还是需要应用程序传递x-request-id。是这样吗?
当调用没有跨线程时,ebpf autotracing 可以自动实现多层追踪(不依赖 x-request-id)。详见:https://deepflow.io/docs/zh/features/distributed-tracing/auto-tracing/
当调用没有跨线程时,ebpf autotracing 可以自动实现多层追踪(不依赖 x-request-id)。详见:https://deepflow.io/docs/zh/features/distributed-tracing/auto-tracing/
感谢解答。
我之前已经查阅了deepflow的文档。对这个跨线程
的场景感到困惑,所以来求证。多跳场景肯定是跨线程的场景,因此还需要借助http header中加入数据的方式才能够实现服务的调用追踪吧。
@LiZhenCheng9527 举个例子:
SvcA -> SvcB -> SvcC
在这个调用链中,我们分析 SvcB,如果「它处理 SvcA 的请求」和「它请求 SvcC」是在同一个线程中发生的,那就能自动追踪。否则就不能。
@LiZhenCheng9527 举个例子:
SvcA -> SvcB -> SvcC
在这个调用链中,我们分析 SvcB,如果「它处理 SvcA 的请求」和「它请求 SvcC」是在同一个线程中发生的,那就能自动追踪。否则就不能。
为什么这样的情况能够做到自动追踪?即使在同一线程处理了请求和发送请求。那么两者的关系是怎么确定的?比方说,SvcB可以每间隔5s访问SvcC,也能够受到SvcA请求之后访问SvcC,在SvcB是黑盒的情况下,怎么将处理的请求和发送的请求关联起来呢?
详细解释非常复杂,可以看看微信视频号:
和我们的 SIGCOMM 论文: https://dl.acm.org/doi/10.1145/3603269.3604823
以往网络多跳的情况下需要http header中添加traceID和spanID,并且需要程序保证这些信息的传递,才能够获取调用链。那么现在deepflow在零侵入的情况下,怎么得到访问这个服务的链接和这个服务发起的一条链接的关系呢?用istio的bookinfo举例子。 deepflow怎么获得rewiews访问ratings是由productPage访问reviews引起的?