我正在尝试编写一个需要了解集群(本地LAN)中其他机器状态的工具。这是针对网络故障转移/高可用性系统的,类似于VRRP和corosync/openais,但我希望包含更多信息(例如接近实时的速度/性能特征),以便设备可以做出更智能的选择。这意味着使用比预先确定的基于权重的机制更复杂的协议:通过允许所有集群机器看到彼此的状态,它们可以共同就哪个最适合作为主设备达成一致。
根据我的搜索,我没有发现任何(C、C++或JavaME)库提供分布式状态机制。理想情况下,我正在寻找定期广播/多播每个单独的机器状态的东西,这样参与的机器就可以建立一个全局状态表,所有的机器都可以看到谁应该是主机。这种情况下的状态是任意的键/值对。
我不想重新发明任何轮子,所以我很好奇这里有没有人能给我指路?
发布于 2011-09-12 04:55:11
我不知道有没有适合你的申请。但我知道你可以用MPI库写一个简单的程序,并广播任何你想要的信息。
所有客户端都可以将它们的状态发送到根节点,然后由根节点广播消息。
为此,您需要的函数包括:
MPI_Bcast
MPI_Send
MPI_Recv网上有很多关于C++/MPI的教程,谷歌一下就知道了!
发布于 2011-09-05 22:25:00
如果我是你,我会研究memcached (memcached.org)或者nosql的变种。
发布于 2011-09-12 05:16:07
听起来Apache ZooKeeper可能是一个很好的匹配。它是分布式的、层次化的键值存储。引用他们的Overview page
ZooKeeper旨在存储协调数据:状态信息、配置、位置信息等。
下面是一个简单的Leader Election recipie示例,尽管它需要进行调整才能通过某种加权标准来确定领导者。
https://stackoverflow.com/questions/7307540
复制相似问题