如何通过 Sleuth 的不同依赖项来跟踪跨度?

How to track the span through different dependencies with Sleuth?

我正在学习如何通过所有微服务跟踪我的分布式进程。我一直在使用 Sleuth、Zipkin 和不同的微服务,效果非常好!但是当我尝试在不同依赖项之间交互的项目中执行相同操作时,我无法创建相同的行为。

这张图片显示了当前不同微服务的工作方式。

这是微服务的示意图:

这张图片显示了具有依赖项的应用程序是如何工作的。

这是具有依赖关系的应用程序图:

我想知道,是否可以使用依赖项创建与微服务相同的行为?

是的,创建跨度时可以设置服务名称。只需调用 newSpan.remoteServiceName(...)

参考@MarcinGrzejszczak的输入,我决定使用自定义跨度:

Span remoteDependency = tracer.nextSpan()
                              .name("dependency_name") 
                              .start();

其中 tracer 是来自 Trace 的自动装配对象:

@Autowired
private Tracer tracer;

两个 类 都在 brave 包中

import brave.Span;
import brave.Tracer;

结果:

如果您想更详细地查看实现,这里是示例:https://github.com/juanca87/sample-traceability-microservices