春季启动并行传出请求的最佳做法是什么?

时间:2018-05-23 02:43:20

标签: java spring-boot concurrency

我正在构建一个Java Spring Boot(微)服务,它基本上只有一个REST端点来检索某些资源的数据。要做到这一点,我需要从每个传入的请求中检索大约3-5个外部资源的信息(缓存和数据的预检索不是一个选项,因为缓存在统计上没有帮助,我不能存储我的服务器上的数据以任何方式)。

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

这样做的最佳做法是什么?

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

(为了比较,使用Node.js这很简单,因为我每个都使用Promise.all(...),并且我获得了很好的并发性,但我希望了解如何使用Java Sprint-Boot实现相同的功能)

1 个答案:

答案 0 :(得分:0)

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

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