Spring Cloud Sleuth是一个分布式跟踪解决方案,它可以帮助我们跟踪微服务架构中的请求流程。它通过生成唯一的跟踪ID和跟踪跨度ID来实现这一点。Sleuth还可以与Zipkin等服务链路追踪工具集成,以便更好地跟踪请求流程。
本文将介绍如何使用Spring Cloud Sleuth和Zipkin进行服务链路追踪。
1. 添加依赖
首先,我们需要在pom.xml文件中添加以下依赖:
org.springframework.cloud spring-cloud-starter-sleuth org.springframework.cloud spring-cloud-starter-zipkin
2. 配置Sleuth
在application.properties文件中,我们需要配置Sleuth:
spring.sleuth.sampler.probability=1.0
这将启用Sleuth,并设置采样率为100%。
3. 配置Zipkin
在application.properties文件中,我们还需要配置Zipkin:
spring.zipkin.base-url=http://localhost:9411
这将告诉Sleuth将跟踪数据发送到Zipkin服务器。
4. 启动Zipkin服务器
我们需要启动Zipkin服务器以接收跟踪数据。可以通过以下命令启动Zipkin服务器:
java -jar zipkin-server-2.23.2-exec.jar
5. 创建微服务
我们需要创建一个简单的微服务来测试Sleuth和Zipkin。以下是一个示例控制器:
@RestController
public class HelloController {
private static final Logger LOGGER = LoggerFactory.getLogger(HelloController.class);
@Autowired
private RestTemplate restTemplate;
@GetMapping("/hello")
public String hello() {
LOGGER.info("Hello from service A");
String response = restTemplate.getForObject("http://localhost:8082/world", String.class);
return "Hello, " + response + "!";
}
}
6. 测试微服务
现在我们可以测试我们的微服务了。我们可以使用Postman或类似的工具向http://localhost:8081/hello发送GET请求。这将返回以下响应:
Hello, World!
7. 查看跟踪数据
现在我们可以查看跟踪数据了。我们可以打开Zipkin的Web界面(http://localhost:9411/zipkin/)并搜索我们的跟踪ID。我们应该能够看到以下跟踪数据:

这显示了我们的请求流程,包括我们的微服务和我们调用的另一个微服务。我们还可以查看每个跨度的详细信息,包括响应时间和日志。
总结
在本文中,我们介绍了如何使用Spring Cloud Sleuth和Zipkin进行服务链路追踪。我们首先添加了必要的依赖项,然后配置了Sleuth和Zipkin。接下来,我们创建了一个简单的微服务来测试Sleuth和Zipkin,并查看了跟踪数据。最后,我们可以使用Zipkin的Web界面查看跟踪数据的详细信息。




