【问题标题】:OpenTracing+Jaeger Language AgnosticOpenTracing+Jaeger 语言无关
【发布时间】:2019-07-30 19:43:00
【问题描述】:

我有三个服务 A、B 和 C,它们的通信方式是这样的

       HTTP       HTTP
   A +------> B +------> C
nodejs      nodejs      java

我正在使用 OpenTracing 和 Jaeger 进行分布式跟踪。问题是这些服务使用不同的语言,但我仍在尝试传播 A 是父跨度的信息,以便跨度树看起来像这样。

A +----------------+
B +-------+
C         +--------+

目前,A、B 和 C 被报告为没有因果关系的单独痕迹。我见过的所有示例都涉及在同一语言和同一项目构建中的不同微服务之间传播因果关系。没有一个涉及完全独立的服务。

【问题讨论】:

    标签: cloud distributed opentracing jaeger


    【解决方案1】:

    您的各个微服务是用哪种语言编写的并不重要,您应该在同一个跟踪中看到它们。鉴于您看到的是三个跟踪而不是一个具有三个跨度的跟踪,上下文传播似乎不起作用。在你的 nodejs 服务中检查你的 HTTP 客户端,他们应该执行"inject" operation。然后,您的服务“B”和“C”应该执行“提取”操作。

    如果您还没有,请查看Yuri Shkuro's OpenTracing Tutorial。第 3 课是关于上下文传播,包括注入和提取操作。

    我不太确定它在 NodeJS 世界中是如何工作的,但是在 Java 中,在你的类路径中拥有 opentracing-contrib/java-web-servlet-filter 工具库就足够了,因为它会在正确的钩子中注册必要的部分并制作可用于每个传入 HTTP 请求的跟踪上下文。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 1970-01-01
      • 2019-12-07
      相关资源
      最近更新 更多