Spring Boot并行传出请求的最佳实践是什么?

use*_*344 5 java concurrency spring-boot

我正在构建一个Java Spring Boot(微)服务,该服务基本上具有一个REST端点来检索某些资源的数据。为此,对于每个传入的请求,我都需要从3-5个外部资源中检索信息(不选择缓存和预先检索数据,因为这两种缓存在统计上均无济于事,并且我不能存储数据在我的服务器上以任何方式)。

因此,基本上每个传入请求都需要生成3-5个外部服务调用,当然我希望并行/并发地进行调用。这是一种非常轻量级的服务,因为它主要在等待I / O响应。

最佳做法是什么?

如果我需要使用某种类型的线程池,则意味着如果我需要支持200个并行请求,那么我就需要600-1000个线程来处理传出请求,这成为一项非常繁重的服务,几乎只在等待I / O。

(作为比较,使用Node.js可以很容易,因为我Promise.all(...)每个都使用a ,并且获得了很高的并发性,但是我希望了解如何使用Java Sprint-Boot实现相同的功能)

小智 0

您可以使用 Spring 5 中添加的新反应式功能。您可以在最新的 spring boot 版本中使用它。

例如看看这个https://spring.io/guides/gs/reactive-rest-service/