scheduled-tasks - 多实例环境下的 ScheduledExecutorService 冗余
问题描述
我在负载均衡器后面的多个实例上运行 Java Web 应用程序。
当用户触发某个 Servlet 时,将ScheduledExecutorService
某个任务安排在未来的某个时间。显然,此任务仅在用户所在的实例上设置。
为了实现冗余,确保将任务也添加到其他实例的最佳方法是什么?也就是说,如果计划任务的实例发生了某些事情,我想确保其他实例已经安排了任务,以便他们可以执行它。
(我不担心任务被多次执行,我可以在我的数据库中将其标记为已执行,该数据库在所有实例之间共享)。
一种解决方案是在两台服务器上每小时安排一个任务,检查(通过数据库)是否执行所述任务。虽然这是可行的,但它需要每小时或每分钟查询一次数据库。所以,如果有办法通过一次调度任务来做到这一点,那就更好了。
解决方案
推荐阅读
- android-studio - 防止在不同设备上同时点击一个按钮
- go - 解组不同类型的数组
- javascript - 有没有办法让无限循环在后台运行?
- javascript - 如何在其容器的底部中心对齐按钮?
- python - 通过考虑顺序信息将列表中的字符串元素替换为元组中的元素
- reactjs - Firebase auth 在注册/注册后发送验证链接
- angular - 在没有组件包装器的情况下将 Angular 组件渲染到 DOM
- c++ - 将新整数插入动态数组时出现分段错误
- php - 将多张照片上传(并重命名)到服务器
- spring-boot - 在 Google Cloud Platform 中部署的项目中调用端点