假设分布式系统网络。每个系统测量一个值。根据所有价值观,所有系统都需要以一致的方式做出正确的决定。通信链接可能会中断。这种情况下是否有投票和同步算法?
问问题
2538 次
2 回答
1
我已经解决了一个类似的问题。这是一个故障检测方案,所以我将用这些术语而不是 OP 的通用术语来描述它。
客户端定期 ping 我们的服务器,在一段时间没有 ping 之后,客户端被认为是死的或在网络分区后面。(它们对我们来说是一样的。)因为客户端可以选择任意的服务器来连接,不同的服务器对于客户端是死的还是活的有不同的看法。
我们的服务器使用八卦/流行病协议来相互交换他们对客户端的看法。这就是逻辑的来源,即一台服务器的数据优于另一台服务器的数据。流行协议的好处是它在网络上很轻,但仍会收敛。
当做出决定时(在我们的例子中,声明客户端已死),任何服务器都有一个包含所有客户端心跳的最新表。任何服务器都可以自由做出决定,我们通过它们之间的共识协议(Paxos 或 Raft)来做出决定。请注意,服务器的决定可能是错误的——但它不太可能没有更新的表,但仍然运行成功的 Paxos 轮次。
于 2015-02-10T18:39:27.843 回答
1
分布式系统中的投票算法示例:
- 欺凌算法(http://en.wikipedia.org/wiki/Bully_algorithm)
- Chang 和 Roberts 算法 ( http://en.wikipedia.org/wiki/Chang_and_Roberts_algorithm )
于 2015-01-23T12:39:06.380 回答