我正在为其中一个客户端开发 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 而不是依赖默认值很重要。
- 您应该配置
server.tomcat.max-threads
,使其符合您的喜好。默认值为 200,如果我没记错的话,最大值为 10000 - 你应该像你提到的 completableFutures 一样保留 ExecutorPool 并正确配置池的大小。
- 可能会增加您的 JVM 堆大小。
- 相应地水平缩放应用。(这将有很大帮助(
从弹簧启动的角度来看,这些确实是您可以控制的唯一 4 件事。