Paxos算法

Posted Tomas曼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Paxos算法相关的知识,希望对你有一定的参考价值。

Paxos算法可分为两二段:

阶段一:

1.Proposer选择一个提案号Mn,然后向Acceptor的某个超过半数的子集发送编号为Mn的Prepare请求。

2.如果一个Acceptor收到一个提案编号为Mn的Prepare请求,且Mn大于该Acceptor已响应过的所有编号,那么它会将它已经批准过的最大的编号提案相应给Proposer,同时承诺不会再批准任何编号小于Mn的提案。

阶段二:

1.如果Proposer收到来自半数以上的Acceptor对其发出的编号为Mn的Prepare请求的相应,那么它就会发送一个[Mn,Vn]提案的请求给Acceptor,Vn是一阶段中响应的最大编号的提案值,如果响应中不包含任何提案值,那么他就是任意值。

2.如果Acceptor收到[Mn,Vn]的提案请求,只要该Acceptor尚未对编号大于Mn的请求做出响应,他就可以通过这个提案。

 

提案的获取Acceptor将批准的提案发送给一个特定的Learner集合,该集合中的每个Learner都可以在一个提案被选定后通知所有其他的Learner。

通过选取主Proposer保证算法的活性:

如果两个Proposer交替向Acceptor发送Prepare请求,那么每次Acceptor都收到更大的Mn(Mn+1),就会在二阶段忽略上一个Proposer发送的[Mn,Vn]提案。这样交替忽略就是死循环,不会通过提案。

解决办法是选出一个主Proposer,只有主Proposer可以发出提案。

 

以上是关于Paxos算法的主要内容,如果未能解决你的问题,请参考以下文章

底层算法系列:Paxos算法

Paxos算法原理与推导

分布式一致性最强算法之Paxos透析

Paxos算法详解

(16)云计算核心算法之Paxos算法

死磕共识算法|Paxos算法