在许多机器上分配状态

时间:2011-09-05 11:41:33

标签: c++ c linux java-me distributed-computing

我正在尝试编写一个需要了解群集中其他计算机状态(本地LAN)的工具。这适用于类似于VRRP和corosync / openais的网络故障转移/高可用性系统,但我希望包含更多信息(例如接近实时的速度/性能特征),以便设备可以做出更明智的选择。这意味着使用比预先确定的基于权重的机制更复杂的协议:通过允许所有集群机器查看彼此的状态,他们可以共同商定哪个最适合作为主设备。

从我的搜索中,我还没有找到任何提供分布式状态机制的(C,C ++或JavaME)库。理想情况下,我正在寻找能够定期广播/多播每个机器状态的内容,这样参与的机器就可以建立一个全局状态表,所有人都可以看到主人应该是谁。在这种情况下,状态是任意键/值对。

我宁愿不重新发明任何车轮,所以很想知道这里是否有人能指出我正确的方向?

3 个答案:

答案 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的教程,只是谷歌吧!