我正在使用 Spring Boot 来构建微服务,并使用 Kubernetes 来实现微服务模式。在这方面,我正在寻找 Spring cloud sleuth 的替代者。我必须使用哪些选项来替换 Sleuth 以进行分布式跟踪。这里的想法是将时间戳、跟踪和跨度作为 sidecar 容器注入到 Spring Boot 应用程序之外。
呼应之前建议 Jaeger 的答案。您还应该查看 OpenTelemetry Java 工具。 OpenTemeletry 中的 Java 工具也支持云侦探 API。自动检测将在应用程序代码之外工作,但它仍然需要在 JVM 内部运行。如果不检测代码,就无法进行分布式跟踪,因此 sidecar 无法生成跨度数据。
你探索过 Jaeger 了吗?
https://landscape.cncf.io/card-mode?category=tracing&grouping=category 有一个不错的列表,您可能想从这里开始。
在我看来,对跟踪的决定取决于您是否需要将其作为 sidecar(类似 Jaeger)或在应用程序中(类似 Sleuth)。我更喜欢 sidecar,因为跟踪作为横切关注点执行,而不依赖于语言或框架。如果需要的话,也许可以将其与 Open Telemetry 这样的库一起使用来引入自定义跨度。 Sleuth 的另一个问题是它与 B3 标头的紧密耦合(当然可以通过编码我们自己的传播类来覆盖 - 但我真的想这样做吗?),而在我们的组织中,我们使用完全不同的标头 - 覆盖此默认值是不可配置的在《侦探》中!
知识Trace原理及java实现,也许对你有帮助