我正在尝试编写一个需要了解群集中其他计算机状态(本地LAN)的工具。这适用于类似于VRRP和corosync / openais的网络故障转移/高可用性系统,但我希望包含更多信息(例如接近实时的速度/性能特征),以便设备可以做出更明智的选择。这意味着使用比预先确定的基于权重的机制更复杂的协议:通过允许所有集群机器查看彼此的状态,他们可以共同商定哪个最适合作为主设备。
从我的搜索中,我还没有找到任何提供分布式状态机制的(C,C ++或JavaME)库。理想情况下,我正在寻找能够定期广播/多播每个机器状态的内容,这样参与的机器就可以建立一个全局状态表,所有人都可以看到主人应该是谁。在这种情况下,状态是任意键/值对。
我宁愿不重新发明任何车轮,所以很想知道这里是否有人能指出我正确的方向?
答案 0 :(得分:2)
如果我是你,我会调查memcached(memcached.org)或其中一个nosql变体。
答案 1 :(得分:2)
听起来Apache ZooKeeper可能是一个很好的匹配。它是分布式,分层键值存储。引用他们的Overview page:
ZooKeeper旨在存储协调数据:状态信息,配置,位置信息等。
这是一个简单的Leader Election recipie的例子,虽然它需要通过某种加权标准进行适应来确定领导者。
答案 2 :(得分:1)
我不确定是否有任何申请表明您的目的。 但我知道你可以用MPI库编写一个简单的程序,并播放你想要的任何信息。
所有客户端都可以将其状态发送到根节点,然后根节点广播该消息。
您需要的功能是:
MPI_Bcast
MPI_Send
MPI_Recv
网上有很多关于C ++ / MPI的教程,只是谷歌吧!