Paxox算法分为两个阶段:
a. Proposer选择一个提案编号N,然后向半数以上的Acceptor发送编号为N的Prepare请求
b. 如果一个Acceptor收到一个编号为N的Prepare请求,且N大于该Acceptor已经响应过的所有Prepare请求的编号,那么它就会将它已经接受过的编号最大的提案(如果有的话)作为响应反馈给Proposer,同时该Acceptor承诺不再接受任何编号小于N的提案
a. 如果Proposer收到半数以上Acceptor对其发出的编号为N的Prepare请求的响应,那么它就会发送一个针对**[N, V]提案的Accept请求给半数以上的Acceptor。注意:V就是收到的响应中编号最大的提案的value**,如果响应中不包含任何提案,那么V就由Proposer自己决定
b. 如果Acceptor收到一个针对编号为N的提案的Accept请求,只要该Acceptor没有对编号大于N的Prepare请求做出过响应,它就接受该提案

方案一:Accepter接受了一个提案,就将该提案发送给所有Learner。
方案二:Accepter接受了一个提案,就将该提案发送给主Learner,主Learner再通知其他Learner。
方案三:Accepter接受了一个提案,就将该提案发送给一个Learner集合,Learner集合再通知其它Learner。
假设有两个Proposer依次提出编号递增的提案,最终会陷入死循环,没有value被选定。

选取一个主Proposer,只有主Proposer才能提出提案。