gpt4 book ai didi

spring - 如何设计一个可以每秒处理1k请求的spring boot应用程序

转载 作者:行者123 更新时间:2023-12-05 04:02:58 25 4
gpt4 key购买 nike

我有一个休息 Controller ,它接受发布请求并返回操作是否成功的状态。它适用于每秒 100 个请求,因为我在它下面有多个操作,这些操作最后发送响应。

可能有数百个用户试图将请求发送到 Controller ,因此这一切都使用可完成的 future 和 http 异步调用程序完成。当每秒有 1000 个请求时会发生问题,然后 Controller 线程耗尽,因为已经有多个线程处理多个请求并且所有线程都在等待 future 完成然后发送响应。

如何让我的休息 Controller 能够每秒处理 1000 个请求而不会中断。

最佳答案

there are already multiple thread processing multiple requests and all are waiting for there future to be complete and then sending the response.

实际上,您可以通过让 Controller 返回 CompletableFuture 来让它们异步。只需将调用链接到服务返回的 CompletableFuture 上,将它们转换为适当的响应,而不是使用 get()join() :

@RequestMapping
public CompletableFuture<ResponseEntity<…>> processRequest() {
return myService.getStatusFuture()
.thenApply(status -> convertToResponseEntity(status));
}

当然,要使其正常工作,您应该拥有真正的异步服务。如果您使用 @Async 或使用 CompletableFuture.supplyAsync() 提交任务,这只会将问题从 HTTP 线程池转移到另一个线程池。

关于spring - 如何设计一个可以每秒处理1k请求的spring boot应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53950438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com