Paxos is Simple

 

 

【角色】
0-MainProposer提案生成者
1-提案发送者(MainProposer+OtherProposer)
2-提案接收者(Acceptor)
【动作】
0-MainProposer---->生成提案
1-MainProposer+OtherProposer---->发送[提案内容、提案编号]结构体至Acceptor
2-提案接收者(Acceptor)---->反馈至提案发送者(MainProposer+OtherProposer)表示批准提案
【约束条件】
0-超过半数提案接收者(Acceptor)批准提案(Proposer),则其被批准;
1-MainProposer提案生成者,全局唯一,其生成提案内容和全局互异提案编号[提案内容、提案编号]({key:val}),OtherProposer从MainProposer获取提案内容和提案编号并发送至提案接收者(Acceptor);
2-全局互异性编号整数值单调递增且和提案为“一对多”关系;
3-提案接收者(Acceptor),无条件批准其收到的第一个提案;其之后对于所有收到的提案,校验提案编号值大小,和之前已经批准的提案编号比大小,
如后者大,则批准后者,且今后不再批准编号小于该编号的提案;
4-MainProposer提案生成者收到超过半数提案接收者(Acceptor)”反馈,则认为提案通过,结束;否则,继续生成[提案内容、提案编号]({key+positive:val+0}),其中仅提案编号更新为收到提案接收者(Acceptor)反馈响应的[提案内容、提案编号]结构体集合中最大提案编号的相对大值。

 

posted @ 2017-10-15 21:16  papering  阅读(141)  评论(0编辑  收藏  举报