标签:兰伯特 记录 最大的 res 投稿 产生 流程 一致性算法 一个
Paxos算法是莱斯利·兰伯特(Leslie Lamport)于1990年提出的一种基于消息传递的一致性算法。
在古希腊,有一个叫做Paxos的小岛,岛上通过议会的形式来通过法令,议会中议员通过信使来传递消息。议员和信使都是兼职的,他们随时有可能离开会议厅,并且信使可能会重复的传递消息,也可能丢失消息。因此议会要保证在这种情况下法令仍然能够正确地产生,并且不会出现冲突。
三者不可兼得
三阶段提交
ZAB协议
Paxos协议
Raft协议
只有被提出的提案才能被选定
在被提出的提案中,只有一个提案会被选定
一个value被选定后,所有的角色可能失败然后重启,除非那些失败后重启的角色能记录某些信息,否则等他们重启后无法确定被选定的值
假设只有一个Acceptor(可以有多个Proposer),只要Acceptor接受它收到的第一个提案,则该提案被选定,该提案里的value就是被选定的value。这样就保证只有一个value会被选定。
缺陷:唯一的Acceptor宕机,就彻底崩溃了
Proposer生成提案之前,应该先去“学习”已经被选定或者可能被选定的value,然后以该value作为自己提出的提案的value。如果没有value被选定,Proposer才可以自己决定value的值。这样才能达成一致。这个学习的阶段是通过一个“Prepare请求”实现的。
如果Acceptor收到一个编号为M的Prepare请求,在此之前它已经响应过编号大于M的Prepare请求。该Acceptor不可能接受编号为M的提案。因此,该Acceptor可以忽略编号为M的Prepare请求。当然,也可以回复一个error,让Proposer尽早知道自己的提案不会被接受。
标签:兰伯特 记录 最大的 res 投稿 产生 流程 一致性算法 一个
原文地址:http://www.cnblogs.com/lanelim/p/7152139.html