WEB应用中的缓存线程池性能
Cached Thread Pool performance in WEB application
我有Spring Boot Application
.
它使用foreach 中的restTemplate
向其他服务器(副本)发送请求。只有一件事不同 - url 地址。
我想在这种情况下我应该使用 ExecutorService.newCachedThreadPool()
而不是 foreach。
1。我有一些@ Controllers
具有相同的逻辑。我应该将单个 ExecutorService
用于应用程序还是每个 @ Controller
它自己的 ExecutorService
?
2。 ThreadPool
行为 - 如果已达到最大大小,没有空闲线程,并且队列变满,拒绝策略开始。
我可以检查它还是只是为了处理异常?
如果你有这样的场景
不同应用程序的多个实例URL
AppInstance1 => localhost:8881
AppInstance2 => localhost:8882
...
AppInstanceN => localhost:888N
现在你可以在一个公共 URL say
上定位所有这些应用程序
http://localhost/
您可以使用任何负载均衡器,例如 Nginx
负载均衡器的作用是根据配置的算法将您的请求重定向到不同的服务器
例如。循环赛
所以当用户点击 http://localhost/user/1
AppInstance1
或 AppInstance2
.. 可以满足此请求
我有Spring Boot Application
.
它使用foreach 中的restTemplate
向其他服务器(副本)发送请求。只有一件事不同 - url 地址。
我想在这种情况下我应该使用 ExecutorService.newCachedThreadPool()
而不是 foreach。
1。我有一些@ Controllers
具有相同的逻辑。我应该将单个 ExecutorService
用于应用程序还是每个 @ Controller
它自己的 ExecutorService
?
2。 ThreadPool
行为 - 如果已达到最大大小,没有空闲线程,并且队列变满,拒绝策略开始。
我可以检查它还是只是为了处理异常?
如果你有这样的场景
不同应用程序的多个实例URL
AppInstance1 => localhost:8881
AppInstance2 => localhost:8882
...
AppInstanceN => localhost:888N
现在你可以在一个公共 URL say
上定位所有这些应用程序http://localhost/
您可以使用任何负载均衡器,例如 Nginx
负载均衡器的作用是根据配置的算法将您的请求重定向到不同的服务器
例如。循环赛
所以当用户点击 http://localhost/user/1
AppInstance1
或 AppInstance2
.. 可以满足此请求