零基础一文读懂分布式系统( 七 )

\n

那么新的问题来了 , 我们怎么知道它是连接不上系统 , 还是它正在参与共识只不过速度比别的机器慢?

\n

因此 , 科学家们发展出了解决共识问题的最重要的一个假设:同步性假设 。 同步性假设引入「超时」概念 , 也就是说事先设定一个时间范围 , 如果领导者无法在该时间范围内发出提案 , 就淘汰它 , 选出一个新的领导者 。 这样一来就可以容忍领导者节点出现问题 。 (注:同步性假设不等于同步假设)

\n

\n

Paxos 算法和 Raft 算法都是基于同步性假设提出来的 。 但这两个算法还需要对系统做另一种假设 , 即认为系统内所有的计算机都是「好人」 , 它们要么正确地响应领导者的提案 , 要么因为故障无法响应 。

\n

然后再制定一条规则:只要系统内过半数的计算机接受了领导者的提案 , 就把该提案作为系统的最终结果 。 这样一来 , 就不用等待所有的计算机都做出响应 , 从而可以容忍追随者节点出现问题 。

\n

于是 , 我们终于拥有了一个可以实现共识的分布式系统 , 虽然对它有严格的条件限定 。

推荐阅读