java - 通过故障转移使长时间运行的任务仅在集群的一台机器上运行?

标签 java distributed-computing failover jgroups

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

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

有人用JGroups解决这个问题吗?您的经历如何?

最佳答案

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

关于java - 通过故障转移使长时间运行的任务仅在集群的一台机器上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16660199/

相关文章:

java - 基本 Apache Camel LoadBalancer 故障转移示例

java - 你知道一个好的 Java RSS/Feed 生成器吗?

tensorflow - 在 Google Colab 中使用多个 GPU 在 Tensorflow 中进行分布式训练

python - 使用 Chapel 处理海量矩阵

distributed-computing - 分布式系统和普及中间件和服务是什么意思

activemq - 仅当从属在故障转移中变为事件状态时,如何在从属 ActiveMQ 上启动 Camel 路由?

java - 有没有一个java库可以合成法语语音(TTS)?

java - 在现有库中添加 javadoc

java - 在 App Engine 上使用 Spring AOP 导致 StackOverflowError

nosql - 选择 noSQL - 可用性优先