Spring Webflux + Sleuth Zipkin:重复请求的证据?

Spring Webflux + Sleuth Zipkin: Proof of duplicate requests?

关于使用 Spring Webflux + Sleuth Zipkin 服务器重复请求的小问题。

我有一个服务器,代码超级简单:

    @PostMapping("/question")
    public Mono<String> question() {
        LOGGER.info("This has been called!");
        return someService.getResponse();
    }

每小时,我希望只有一个我认识的客户端调用此端点一次。

因此,每小时,我都会在我的日志中看到这个:

INFO [myservice,c3a25fb0fb7426b7,c3a25fb0fb7426b7] 10 --- [or-http-epoll-3] c.my.Controller  : This has been called!

到目前为止一切顺利。

问题是有好几次,我确实在我的日志中看到:

INFO [myservice,5278cfd673fddc60,1582c3da8d01adaa] 10 --- [or-http-epoll-2] c.my.Controller  : This has been called!
INFO [myservice,5278cfd673fddc60,c8a85b0275b6bfdd] 10 --- [or-http-epoll-3] c.my.Controller  : This has been called!

很自然地,我假设我认识的唯一客户没有像预期的那样给我打电话一次,而是给我打了两次电话。

但是,客户端的日志显示只发出了一个 http 出站请求。

请问,看到相同的trace ID,但不同的Span ID就足以证明,至少有两次请求发送是确凿的证据吗?

[or-http-epoll-2] and [or-http-epoll-3]也可以帮忙证明吗?

仅凭此处所写的信息,是否可以证明有关重复项的任何信息?

谢谢

您可以通过打开访问日志来证明这一点。 两个不同的日志事件具有相同的 traceID 并不能证明什么,它可能会发生:

  • 客户给你打了两次电话
  • 客户端给你打了一次电话,你又创建了一个span
  • 客户给你打电话,另一个客户也给你打电话

你可以 enable access logs which can prove this or you can use a rq/rs log library (like logbook) 为你做这件事。我建议只启用访问日志。