我想要区分同一个用户对同一个端点的两个API调用?在Spring中有什么默认的方法来做到这一点吗?据我所知,每个调用都由一个单独的线程处理。例如,有什么方法可以获得线程ID吗?
发布于 2020-11-24 07:42:49
我假设您可能正在寻找可以跟踪每个请求的请求跟踪。为了达到同样的目的,你可以使用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收集器查找。
存储-这个模块在后端存储和索引查找数据。支持卡桑德拉、ElasticSearch和MySQL。
Search --这个模块提供了一个简单的JSON,用于查找和检索存储在后端中的跟踪。这个API的主要使用者是Web。
Web -用于查看跟踪的非常好的UI界面。
探测是Spring家族的一个工具。它用于生成跟踪id、span id并将这些信息添加到headers和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]
.
发布于 2020-11-24 06:58:58
我想不出一种从头上跳下来的方法,但是在使用Spring微服务体系结构时,我通常会向头或主体添加一个关联id,然后返回该响应,以提供审计跟踪。
当然,这假定客户端也负责发出API请求,因此如果您的问题不是这样的话,请道歉。
https://stackoverflow.com/questions/64989025
复制相似问题