首页 > 解决方案 > 多实例环境下的 ScheduledExecutorService 冗余

问题描述

我在负载均衡器后面的多个实例上运行 Java Web 应用程序。

当用户触发某个 Servlet 时,将ScheduledExecutorService某个任务安排在未来的某个时间。显然,此任务仅在用户所在的实例上设置。

为了实现冗余,确保将任务也添加到其他实例的最佳方法是什么?也就是说,如果计划任务的实例发生了某些事情,我想确保其他实例已经安排了任务,以便他们可以执行它。

(我不担心任务被多次执行,我可以在我的数据库中将其标记为已执行,该数据库在所有实例之间共享)。

一种解决方案是在两台服务器上每小时安排一个任务,检查(通过数据库)是否执行所述任务。虽然这是可行的,但它需要每小时或每分钟查询一次数据库。所以,如果有办法通过一次调度任务来做到这一点,那就更好了。

标签: scheduled-tasksschedulerscheduledexecutorservice

解决方案


推荐阅读