java - WEB应用中的缓存线程池性能

标签 java spring multithreading concurrency threadpool

我有Spring Boot应用程序

它使用 foreach 中的 restTemplate 向其他服务器(副本)发送请求。只有一件事不同 - url 地址。

我认为在这种情况下我应该使用 ExecutorService.newCachedThreadPool() 而不是 foreach。

1。我有一些具有相同逻辑的@ Controllers。我应该为应用程序使用单个 ExecutorService 还是为每个 @ Controller 使用自己的 ExecutorService
2ThreadPool 行为 - 如果已达到最大大小,没有空闲线程,并且队列已满,则拒绝策略启动。
我可以检查它还是只是为了处理异常?

最佳答案

如果你有这样的场景

不同 URL 上的应用程序的多个实例

AppInstance1 => localhost:8881
AppInstance2 => localhost:8882
...
AppInstanceN => localhost:888N

现在您可以在一个通用 URL 上定位所有这些应用程序

http://localhost/

您可以使用任何负载均衡器,例如 Nginx

负载均衡器的作用是根据配置的算法将您的请求重定向到不同的服务器

例如。循环赛

所以当用户点击http://localhost/user/1

AppInstance1AppInstance2.. 可以处理此请求

关于java - WEB应用中的缓存线程池性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55284070/

相关文章:

java - Spring Data Redis 和 Spring Security Data 依赖冲突

mysql - Spring批处理xlxs文件到MySql数据库

c# - 'context' 在 C# async/await 代码中到底意味着什么?

c# - 如果异步调用不一定在不同的线程上执行,那么阻塞异步调用如何会导致死锁?

c - 如果我们将 sigev_notify 用作 SIGEV_THREAD,为什么 timer_create 会生成线程

java - 如何在不使用main方法的情况下按一定顺序执行Java中的方法?

java - "Column count doesn' t匹配值计数在第1行”程序错误

java - key 斗篷一次性访问

java - 构建 spring-crow-security 示例时出现 Maven 错误

Java nio 监视服务 : Watch Windows drives list