【发布时间】:2018-11-01 21:26:39
【问题描述】:
我正在构建一个 Java Spring Boot(微)服务,它基本上有一个 REST 端点来检索某些资源的数据。为此,对于每个传入的请求,我需要从大约 3-5 个外部资源中检索信息(数据的缓存和预检索不是一种选择,因为缓存在统计上无济于事,而且我不能存储数据以任何方式在我的服务器上)。
所以基本上每个传入的请求我需要生成 3-5 个外部服务调用,当然我希望让这些调用并行/并发。这是一个非常轻量级的服务,因为它主要等待 I/O 响应。
这样做的最佳做法是什么?
如果我需要使用某种线程池,这意味着如果我需要支持 200 个并行请求,那么我需要 600-1000 个线程来处理传出请求,这变成了一个非常繁重的服务,主要是在等待 I/ O。
(相比之下,使用 Node.js 这很容易,因为我每个人只使用一个Promise.all(...),并且我获得了很好的并发性,但是我希望了解如何使用 Java Sprint-Boot 来实现相同的目标)
【问题讨论】:
-
我认为您的问题不适合 SO - 它基于意见,过于广泛,最后,它主要是要求图书馆推荐 - 所有 3 个都不适合。但您可能想阅读这篇博文:High-Concurrency HTTP Clients on the JVM
标签: java spring-boot concurrency