【问题标题】:What's the best practice for spring boot parallel outgoing requests?spring boot 并行传出请求的最佳实践是什么?
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-04-19
    • 2022-01-07
    • 1970-01-01
    • 2020-03-08
    • 2020-04-26
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    相关资源
    最近更新 更多