有一些集群,还有一些 unix 网络守护进程。此守护程序在每个集群节点上启动,但只有一个可以处于活动状态。
当活动的守护进程中断(节点中断的程序中断)时,其他节点应该变为活动的。
我可以想到一些可能的算法,但我认为已经对此进行了一些研究,还有一些现成的算法?我对吗?你能指出我的答案吗?
谢谢。
有一些集群,还有一些 unix 网络守护进程。此守护程序在每个集群节点上启动,但只有一个可以处于活动状态。
当活动的守护进程中断(节点中断的程序中断)时,其他节点应该变为活动的。
我可以想到一些可能的算法,但我认为已经对此进行了一些研究,还有一些现成的算法?我对吗?你能指出我的答案吗?
谢谢。
Jgroups 是一个 Java 网络堆栈,其中包括DistributedLockManager
支持类型和集群投票功能。这些允许任意数量的 unix 守护进程就谁应该处于活动状态达成一致。所有节点都可能试图获得锁(例如),只有一个会成功,直到应用程序或节点失败。
Jgroups 也有特定通信通道协调器的概念。一次只能有一个节点作为协调者,当一个节点发生故障时,另一个节点成为协调者。很容易测试您是否是协调员,在这种情况下您将处于活动状态。
参见:http ://www.jgroups.org/javadoc/org/jgroups/blocks/DistributedLockManager.html
如果你要自己实现这个,有很多事情要记住: