选举协议paxos 协议 理解

  1. 获取一个Proposal ID n,为了保证Proposal ID唯一,可采用时间戳+Server ID生成;
  2. Proposer向所有Acceptors广播Prepare(n)请求;
  3. Acceptor比较n和minProposal,如果n>minProposal,minProposal=n,并且将 acceptedProposal 和 acceptedValue 返回;
  4. Proposer接收到过半数回复后,如果发现有acceptedValue返回,将所有回复中acceptedProposal最大的acceptedValue作为本次提案的value,否则可以任意决定本次提案的value;
  5. 到这里可以进入第二阶段,广播Accept (n,value) 到所有节点;
  6. Acceptor比较n和minProposal,如果n>=minProposal,则acceptedProposal=minProposal=n,acceptedValue=value,本地持久化后,返回;否则,返回minProposal。
  7. 提议者接收到过半数请求后,如果发现有返回值result >n,表示有更新的提议,跳转到1;否则value达成一致。

   理解: 设共有 2f+1个个体。则最多共可以产生f+1 个不同的value 值。

             证明:假设当前在 2f+1个个体 中已经产生了 f+1 个不同的value值。 由于第4步Proposer需要收到超过半数的回复,也就是说至少需要收到f+1个回复;

             也就可以简化成 从 2f+1 个个体中,的f+1 个子集中 获取 value 值,由于假设条件(已存在f个不同的value值),则这个value 值必定属于原来的f+1 value 值的集合中。所以永远无法产生 第f+2 个value 值

猜你喜欢

转载自www.cnblogs.com/gfbppy/p/12228242.html