【发布时间】:2021-09-27 16:02:24
【问题描述】:
我有三个微服务,通过 Kafka 进行通信。我正在使用 Brave 的 @Tracer。跟踪 id 是一致生成的,但是微服务 2 和 3 中的 parentId 不同。我们可以在整个微服务中生成一致的 parentId 吗?
谢谢。
【问题讨论】:
我有三个微服务,通过 Kafka 进行通信。我正在使用 Brave 的 @Tracer。跟踪 id 是一致生成的,但是微服务 2 和 3 中的 parentId 不同。我们可以在整个微服务中生成一致的 parentId 吗?
谢谢。
【问题讨论】:
您使用的是什么版本的 Sleuth?如果是 3.x,请使用 Sleuth 的 Tracer 而不是 Brave 的。
由于 Spans 表示操作,spanId 对于每个 Span 都会有所不同,parentId 实际上意味着前一个(父)Span 的 Id,所以如果 parentId 是完全正常的对于两个不同的 Span 来说是不一样的(如果它们不共享同一个父级)。
这里 Span 的 parentIds 如下:
【讨论】:
parentId 是相关的,但如果您在跨度期间不发出日志事件,则不会记录该 spanID(+ 其parentId)。例如:spanA -> spanB -> spanC,如果您在 spanB 期间不发出日志事件,您将看到您遇到的行为。我建议在本地使用 Zipkin 进行检查:github.com/jonatan-ivanov/local-services/blob/main/zipkin/…