在Spring Boot中,我们可以区分同一用户对同一端点的两个REST调用吗



我想区分同一用户对同一端点的两个API调用?在Spring Boot中有没有默认的方法可以做到这一点?据我所知,每个调用都由一个单独的线程处理。那么,有什么方法可以获得线程ID吗?

我认为您可能正在寻找可以跟踪每个请求的请求跟踪。为了达到同样的效果,你可以使用Zipkin和Sleuth。

在pom文件中添加依赖项

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

ZipKin

内部有4个模块——

收集器–一旦任何组件将跟踪数据发送到Zipkin收集器守护进程,Zipkin收集器就会对其进行验证、存储和索引以供查找。

存储–此模块在后端存储查找数据并为其编制索引。支持Cassandra、ElasticSearch和MySQL。

搜索–此模块提供了一个简单的JSON API,用于查找和检索存储在后端的跟踪。此API的主要使用者是Web UI。

Web UI–用于查看跟踪的非常好的UI界面。


SleuthSluth是Spring云系列中的一个工具。它用于生成跟踪id、跨度id,并将这些信息添加到标头和MDC中的服务调用中,以便Zipkin和ELK等工具可以使用它来存储、索引和处理日志文件


现在您可以看到如下所示的日志

2020-10-21 12:01:16.285  INFO [my-application,0b6aaf642574edd3,0b6aaf642574edd3,true] 289589 --- [nio-9000-exec-1] Example              : Hello world!

他的条目对应于[application name,trace id, span id, whether the trace should be propagated to an external system]

我想不出什么方法,但在使用Spring Boot微服务架构时,我通常会在标头或正文中添加一个相关id,然后将其与响应一起返回,以提供审计跟踪。

当然,这是假设一个人也要对提出API请求的客户负责,所以如果你的问题不是这样的话,很抱歉。

最新更新