如何在 java springboot 微服务中非常有效地处理碎片请求



我正在为其中一个客户端开发 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 微服务中有效地处理此用例?

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

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

从弹簧启动的角度来看,这些确实是您可以控制的唯一 4 件事。

最新更新