三个角色:proposers,acceptors,learners
提议有两个阶段,proposer向acceptor发出prepare阶段,proposer向acceptor发出accept阶段。
最后learner根据acceptor的状态学习到一致状态。
提议包括提议编号n,提议内容v
第一阶段a:proposer向所有acceptor广播提议n,
第一阶段b:acceptor承诺proposer不会接收提议编号小于n的提议
第二阶段a:
第二阶段b:acceptor接收提议后,如果提议编号不违反自己的承诺,则接收该提议。
阶段一 提议者Proposer:向接受者Acceptor广播预提案,附带接下来提案Proposal的proposal_id 接受者Acceptor:收到预提案后更新a_proposal_id = max(proposal_id,a_proposal_id)
阶段二 提议者Proposer:向接受者Acceptor广播提案,和之前的预提案共享同一个proposal_id 接受者Acceptor:如果收到的提案的proposal_id>= a.proposal_id,那么接受这个提案,更新a_proposal_id = max(proposal_id,a_proposal_id)
第二遍:
共识算法的三个安全要求:
1.选择的值必须是被提议过的值
2.所有提议的值中,只选择一个
3.除非一个值被选中过,否则线程不会learn到它
三种角色&