首页 > 解决方案 > 如何使用springboot微服务实现req id进行跟踪?

问题描述

问题是:

每当客户端调用 API 时,我想用唯一标识符对其进行标记或使用客户端提供的标识符(通常在查询参数中)并将其跨组件传递,直到该请求成功满足或失败。目标是全面了解不同组件如何处理请求以及每个组件发生了什么,并快速识别问题。

我如何使用 springboot 微服务来实现这一点。请帮我。

标签: javaspring-boot

解决方案


Spring Cloud Sleuth 是您正在寻找的:https ://cloud.spring.io/spring-cloud-sleuth/reference/html/

Spring Cloud Sleuth 的解决方案是将 span 和 trace ID 注入到日志条目中。跟踪 ID 是整个请求流将共享的唯一标识符。IA 跨度更本地化,是为每个请求发送事件接收到的每个请求定义的。它们定义了特定的交互点。

初始跨度或根跨度是在从分布式系统外部接收到客户端请求时生成的。此请求缺少跟踪和跨度信息。根跨度成为通过系统/系统的其余请求流的跟踪 ID。

下图显示了 Sleuth 跨度和跟踪生成如何通过假设的服务网络工作。

在此处输入图像描述

您需要在代码中做的就是添加依赖项spring-cloud-starter-sleuth,Spring 将自动检测以下通信通道:

  • 通过 Apache Kafka 或 RabbitMQ 等消息传递技术的请求
  • 在 Spring MVC 控制器处接收到的 HTTP 标头
  • 使用 RestTemplate 发出的请求

推荐阅读