【问题标题】:How to handle the fragmented requests very efficiently in java springboot microservice?java springboot微服务中如何高效处理碎片化请求?
【发布时间】:2019-10-29 14:42:24
【问题描述】:

我正在为其中一个客户开发 springboot 微服务...

客户端请求正文包含{Group : A, SomeProp: ABC}

从服务器端: 在服务器中,每个组都有映射。例如:A 组是 1,2,3,4,B 组是 3,4,5,6,7,8 等等。现在服务器应该像这样拆分请求

-> 1,ABC

-> 2,ABC

-> 3,ABC 等等.... 现在,应该并行处理所有碎片化的请求,并通过 acqtivemq 发送响应。 关键是,1个请求在服务器端会被分片成多个请求,需要异步处理。 目前,我正在使用线程池来管理它。 痛苦是在重负载/更多请求数量期间延迟时间非常长,并且进程使用量逐渐增加。

如何在 springboot 微服务中有效地处理这个用例?

【问题讨论】:

    标签: java spring-boot microservices


    【解决方案1】:

    对于这样的事情,我认为根据自己的喜好配置 Spring Boot 而不是依赖默认值很重要。

    1. 您应该配置server.tomcat.max-threads,使其符合您的喜好。如果我没记错的话,默认是 200,最大值是 10000
    2. 您应该像您提到的那样使用 completableFutures 保留 ExecutorPool,并正确配置池的大小。
    3. 可能会增加您的 JVM 堆大小。
    4. 相应地水平扩展您的应用程序。 (这会很有帮助)

    从 Spring Boot 的角度来看,这实际上是您可以控制的唯一 4 件事。

    【讨论】:

    • 您也可以减少允许的写入连接超时,这样如果客户端发送数据的时间过长,您就会取消连接,迫使他们稍后重试。
    • 是的。谢谢你。期待你的答复。第 1 点和第 2 点已得到注意,第 3 点和第 4 点已经在范围内。我认为,在改进设计方面。
    猜你喜欢
    • 1970-01-01
    • 2017-01-14
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多