java - 如何使用springboot微服务实现req id进行跟踪?
问题描述
问题是:
每当客户端调用 API 时,我想用唯一标识符对其进行标记或使用客户端提供的标识符(通常在查询参数中)并将其跨组件传递,直到该请求成功满足或失败。目标是全面了解不同组件如何处理请求以及每个组件发生了什么,并快速识别问题。
我如何使用 springboot 微服务来实现这一点。请帮我。
解决方案
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 发出的请求
推荐阅读
- python - 如何在 Python 中使用 request 或 aoihttp 实现 CURL -o
- firebase - Firestore 规则
- applet - 编写一个使用 NFC 的小程序有什么不同吗?
- r - 如何在 R 中使用 ggplot2 制作《金融时报》多面图表
- python - Paho 订阅者 on_message -回调函数移动到单独的文件中
- python - 仅在numpy中使用random.random获取-2和2之间的浮动随机数?
- python - 从不同线程加载和运行 TensorFlow 模型
- elasticsearch - Elasticsearch 7.2.0:master 尚未被发现或选举,选举至少需要 X 个节点
- javascript - 淡入淡出文本,停在最后一个文本
- azure - 从邀请登录后 Azure B2B 应用程序重定向到 Web 应用程序