Algorithm 分布式系统中的投票算法

Algorithm 分布式系统中的投票算法,algorithm,synchronization,voting,distributed-system,consensus,Algorithm,Synchronization,Voting,Distributed System,Consensus,假设分布式系统网络。每个系统测量一个值。根据所有价值观,所有系统都要一致做出正确的决定。通信链路可能中断。这种情况下是否有投票和同步算法?分布式系统中投票算法的示例: 欺负算法() Chang和Roberts算法() 我解决了一个类似的问题。这是一个故障检测方案,所以我将用这些术语来描述它,而不是OP的一般术语 客户机定期ping我们的服务器,在一段时间没有ping之后,客户机被认为已死亡或在网络分区后面。(它们对我们来说是一样的。)因为客户端可以选择一个任意的服务器来连接,不同的服务器对客户端

假设分布式系统网络。每个系统测量一个值。根据所有价值观,所有系统都要一致做出正确的决定。通信链路可能中断。这种情况下是否有投票和同步算法?

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

  • 欺负算法()
  • Chang和Roberts算法()

  • 我解决了一个类似的问题。这是一个故障检测方案,所以我将用这些术语来描述它,而不是OP的一般术语

    客户机定期ping我们的服务器,在一段时间没有ping之后,客户机被认为已死亡或在网络分区后面。(它们对我们来说是一样的。)因为客户端可以选择一个任意的服务器来连接,不同的服务器对客户端是死是活有不同的看法

    我们的服务器使用一个数据库来交换他们对客户端的看法这就是一台服务器的数据优于另一台服务器的逻辑所在。流行病协议的好处在于它在网络上很轻,但仍然会收敛


    当做出决定时(在我们的例子中,声明客户机已死亡),任何服务器都有一个相当最新的客户机心跳表。任何服务器都可以自由做出决定,我们通过它们之间的一致协议(Paxos或Raft)来做决定。请注意,服务器的决定可能是错误的,但它不太可能没有某种程度上最新的表,但仍能成功运行Paxos循环。

    有多少相互排斥的选择可供选择?这是“发射核武器”类型的决定,还是“说出你最喜欢的儿童演员的名字?”嗨。所有系统都处于某种状态(例如A)。每个系统可能检测到问题,并建议将状态从当前(例如a)更改为另一个(例如B)。其他正确的系统可能会回答他们同意或认为这是一个坏主意。根据每个系统的权重和它们的响应,所有系统应该就是否改变状态和采取行动达成共识。系统是异步的,但我们可以假设我们可以使用超时并获得可接受的结果。我们可以通过假设崩溃故障(或通信故障)来简化。两个系统可能会提出不同的状态。谢谢你,迈克尔。我会研究你的答案,希望它对我的问题有意义。