反问
- 朴素Paxos算法是用来干什么的。
用来唯一确定一个值
。 - 怎么来确定。采用
投票
(B
一轮投票的集合) - 一轮投票能解决一致性问题吗。不能。因为任何节点都能发起投票。所以涉及到了
多轮投票Beta
的概念。 - 多轮投票有什么问题。多轮投票中,应该选那个呢,
即如何处理冲突
,建立多轮投票之间的关联。 - 采用
MaxVote
,建立多轮投票之间的关联。多轮投票的约束
是什么。- 每轮投票的编号必须是唯一的。 Bbal ≠ \neq ̸= B’bal 。
- 只有多数派进行了投票,本轮投票才算成功。
- 两次成功的投票。那么存在的Bdec = B’dec
如何证明多次投票可以引出一致性
反证法
:假设真的出现了一轮投票B’ ,使得B’bal > Bbal ,而 B’desc ≠ \neq ̸= Bdec;
如何获得MaxVote
- Bqrm发送投票Bbal,并要求投票者返回编号小于Bbal的最大编号投票 B’.
- 如何处理乱序的问题呢。Accept进行Promise,不再接受Bbal的投票。
Paxos实操过程
- 算法角色和过程
- 算法描述
- 算法实例演示