分布式系统中的投票算法

时间:2015-01-10 16:51:48

标签: algorithm synchronization voting distributed-system consensus

假设分布式系统网络。每个系统都测量一个值。所有系统都可以根据所有值做出正确的决定。通讯链接可能会下降。这种情况下是否有投票和同步算法?

2 个答案:

答案 0 :(得分:1)

分布式系统中的投票算法示例:

  1. 欺负算法(http://en.wikipedia.org/wiki/Bully_algorithm
  2. Chang和Roberts算法(http://en.wikipedia.org/wiki/Chang_and_Roberts_algorithm

答案 1 :(得分:1)

我已经解决了类似的问题。这是一种故障检测方案,因此我将用这些术语来描述它,而不是OP的通用术语。

客户端定期ping我们的服务器,经过一段时间没有ping,客户端被认为已死或位于网络分区之后。 (它们与我们相同。)因为客户端可以选择要连接的任意服务器,所以不同的服务器对客户端是死还是活有不同的视图。

我们的服务器使用gossip/epidemic protocol来互相交换客户视图。 这就是逻辑来自一台服务器的数据优于另一台服务器的。关于流行病协议的好处在于它在网络上很轻,但仍会收敛。

当做出决定时(在我们的情况下,声明客户端已经死亡),任何服务器都有一个可以容忍地查看所有客户端心跳的最新表。任何服务器都可以自由决定,我们通过共识协议(Paxos或Raft)做出决定。请注意,服务器可能决定错误 - 但它不太可能没有一个有点最新的表但仍然运行成功的Paxos轮。< / p>