我有一个包含大约 100k - 200k 行的 MySQL 数据库表。表行每 5-10 秒频繁创建、更新和删除。目前,单个 JVM 应用程序实例读取所有行并处理表中被发现处于特定状态的所有实体。处理任务每 1-2 分钟安排一次,处理本身大约需要 1-2 分钟。现在我想让这个 JVM 应用程序成为集群容错服务。一种选择是让多个实例获取分布式 Hazelcast 锁,无论哪个实例获取锁都会处理实体。然而理想情况下,我希望参与服务的所有 JVM 实例都处理一些行,但同时确保每行在给定的 5 分钟间隔内至少处理一次。
有没有一种方法可以使用 Hazelcast 在多个节点实例之间分担表行子集的责任?
PS:替换 MySQL 不是一个选项,Hazelcast 的开源替代品是一个选项。
最佳答案
我觉得用Hazelcast分布式锁来解决这个case的问题是没有必要的。
Quartz 是解决您问题的最佳选择。
http://quartz-scheduler.org/
关于java - 使用(最好是 Hazelcast)分布式同步原语来高效地同步 MySQL 表访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27511600/