1

我有一个低 CPU 队列处理任务,我需要保持运行很长一段时间。如果任务失败,我希望任务在高可用性集群环境中运行,如果第一台机器出现故障,任务应该“切换”到另一台机器。确保我一次在集群中的一台机器上运行任务的最佳方法是什么,并且在机器故障时实现无缝故障转移?

现在,我打算使用JGroups来实现这个功能。我会为每个任务保留一个频道,只有频道负责人会执行任务,其他成员“跟随”。然后,如果频道领导者发生变化,新的频道领导者会从上一个离开的地方继续。

有没有人使用 JGroups 来解决这个问题?你的经历是什么?

4

1 回答 1

1

您可能会从 JBoss 4.2.3+ Clustered Singleton中获得一些灵感和指导。定义一个在一个节点上运行的服务,并且只有一个节点集群中的一个节点。如果该节点发生故障,或者从集群中弹出,则为新节点分配单例。[JBoss Clustering] 的底层实现是 JGroups。

于 2013-05-21T21:17:22.110 回答