我有三个服务A、B和C,它们的通信方式如下
HTTP HTTP
A +------> B +------> C
nodejs nodejs java我正在使用OpenTracing和Jaeger进行分布式跟踪。问题是这些服务使用不同的语言,但我仍然试图传播A是父span的信息,以便生成树看起来像这样。
A +----------------+
B +-------+
C +--------+现在,A、B和C被报告为没有因果关系的单独痕迹。我见过的所有示例都涉及在相同语言和相同项目构建中的不同微服务之间传播因果关系。没有一个涉及完全独立的服务。
发布于 2019-08-01 00:41:54
您的单个微服务是用哪种语言编写的并不重要,您应该在相同的跟踪中看到它们。假设您看到的是三个轨迹,而不是具有三个跨度的一个轨迹,则上下文传播似乎不起作用。在您的nodejs服务中检查您的HTTP客户端,它们应该执行"inject" operation。然后,您的服务"B“和"C”应该执行“提取”操作。
如果您还没有,请查看Yuri Shkuro's OpenTracing Tutorial。第3课是关于上下文传播的,包括插入和提取操作。
我不太确定它在NodeJS世界中是如何工作的,但在Java语言中,在类路径中拥有opentracing-contrib/java-web-servlet-filter仪表库就足够了,因为它将在正确的钩子中注册必要的部分,并使跟踪上下文可用于每个传入的HTTP请求。
https://stackoverflow.com/questions/57278976
复制相似问题