📅  最后修改于: 2023-12-03 15:25:18.637000             🧑  作者: Mango
在构建微服务应用程序时,您需要追踪和监视请求如何在整个应用程序中流动。为此,Zipkin是一个非常有用的工具,它提供分布式追踪功能。在本文中,我们将介绍如何将微服务连接到Zipkin,以便您可以监视和分析应用程序中的请求。
Zipkin是一种分布式追踪系统,用于监视和诊断微服务应用程序中的请求。它提供了一个非常酷的用户界面,您可以在该界面中查看请求流,并从视觉上了解请求如何流动和处理。
Zipkin由许多组件组成,其中主要的组件是:
下面是我们应该采取的步骤将微服务连接到Zipkin:
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-core</artifactId>
<version>LATEST_VERSION</version>
</dependency>
<dependency>
<groupId>io.zipkin.reporter</groupId>
<artifactId>zipkin-reporter</artifactId>
<version>LATEST_VERSION</version>
</dependency>
<dependency>
<groupId>io.zipkin.reporter</groupId>
<artifactId>zipkin-sender-urlconnection</artifactId>
<version>LATEST_VERSION</version>
</dependency>
import brave.Tracing;
import brave.opentracing.BraveTracer;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import zipkin2.reporter.AsyncReporter;
import zipkin2.reporter.okhttp3.OkHttpSender;
public static String addUser(String name, String email) {
// 初始化Zipkin
ZipkinStart.init();
// 继续正常的处理逻辑
User user = new User();
user.setName(name);
user.setEmail(email);
userRepository.save(user);
return "User created successfully";
}
public class ZipkinStart {
public static void init() {
String zipkinUrl = "http://localhost:9411/api/v2/spans";
OkHttpSender okHttpSender = OkHttpSender.create(zipkinUrl);
AsyncReporter asyncReporter = AsyncReporter.builder(okHttpSender).build();
Tracing braveTracer = Tracing.newBuilder()
.localServiceName("userService")
.spanReporter(asyncReporter)
.build();
BraveTracer braveTracerAdapter = BraveTracer.create(braveTracer);
io.opentracing.Tracer tracerAdapter = braveTracerAdapter;
GlobalTracer.register(tracerAdapter);
}
}
此代码将初始化Zipkin跟踪器并将其进行注册,以便在整个应用程序中使用它。此代码片段将应用程序的服务名称命名为“userService”,但您可以将其更改为您选择的任何服务名称。
3.确保请求可以跨微服务传播。使用Spring Cloud Sleuth等工具进行跨服务传播。
// 例子中使用了Feign Client
@FeignClient(name = "user-service")
public interface UserServiceClient {
@GetMapping("/{id}")
User getUser(@PathVariable("id") Long id);
}
java -jar zipkin-server-2.21.2-exec.jar
注:这里使用的是Zipkin 2.21.2版本
使用Zipkin可以更好地理解应用程序中的请求流,及时发现可能出现的问题。通过引入Zipkin客户端库,跨微服务传递跟踪ID等操作,以及在Zipkin UI中查看发送请求的详细信息,您将能够更好地理解所有应用程序中的流程并提高应用程序的性能。