Paxos算法主要通过定义约束保证一致性,即只要算法满足一定的约束,就能保证一致性。
定义Paxos符号:
约束一:提案编号唯一。
约束二:多数派提案才成功。
约束三:当需要提案B时,如果提案多数派中有人已经提议了B*(提案编号B* < B),则maxVote = B*(保证一致性的关键)
约束四: 保证提案编号的顺序,即如果提案B,并且之前已经有B* > B , 则抛弃编号为B的提案。
位了保证编号的顺序性,所以需要强化约束,当不再接受编号小于当前已经表决的提议的最大值。当前表决的提议编号一定要大于已经表决了的提议编号。
paxos计算机语言描述:
Paxos主要有proposer->acceptor。proposer提议主要了prepare请求、accept请求。acceptor主要有处理prepare请求,处理accept请求。
proposer准备主要是获取每个acceptor的最大编号或者拒绝这次提议,根据acceptor的返回编号,选取最大的在大多数提议中的编号作为accept请求。