环境是这样的 :websphere集群。5台机器,每台机器有2-3个节点。
有一个任务 要在每个机器上生成 索引。现在quartz集群后。任务不能保证被所有 机器都会执行 。如果做能让 每个机器上只有一个节点执行呢
环境是这样的 :websphere集群。5台机器,每台机器有2-3个节点。
有一个任务 要在每个机器上生成 索引。现在quartz集群后。任务不能保证被所有 机器都会执行 。如果做能让 每个机器上只有一个节点执行呢
我理解这里有两个问题,第一,需要在每台机子上创建执行定时任务,第二,每台机子上只能由一个节点执行任务。
那么,有必要在集群中引入基于机子(用ip来形容可能更加合适)的锁的概念,每台机子建立一把锁,持有本机的锁的本机的节点才能执行定时任务。至于锁的实现可以有很多种方式,基于文件锁的、基于数据库的、基于zookeeper的都可以。
如果需要对定时任务做更加高的保障,例如,某一个节点执行定时任务过程中失败了,需要本机的其他的节点替代执行的话,可以再锁上面添加状态信息来实现。