paxos 算法略解

paxos算法是莱斯利·兰伯特英语:Leslie Lamport,LaTeX中的“La”)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法

维基地址是https://zh.wikipedia.org/wiki/Paxos%E7%AE%97%E6%B3%95

paxos 

有以下几个

client 产生提议者

proposer 申请提议者

acceptor 接受提议者

learn 学习者

这其中 client产生提议,proposer将产生的提议拿去申请,acceptor接受申请,client最终学习

主要proposer分为两阶段

第一阶段 准备阶段

properser拿着client产生的提议和自己产生的编号去访问acceptor,如果acceptor为空,则接受这个提议和编号,并存起来,如果中途发现有acceptor的发现它的编号不为空,且编号大于这个提议者的编号,那么就会拒绝他,但是这个properser不放弃,会更新自己的编号重新去访问所有acceptor,如果自己的提议和编号被超过半数的acceptor接受,就会进入第二阶段,如果在申请的时候发现,已经提交了的acceptor已经过半了,那么该properseor会马上改变自己,接受已经的说好的提议。

第二阶段 提交阶段

propersor得到过半数的acceptor接受,准备提交了,propersor变成多线程准备提交的时候,如果acceptor在这个提交之前又接受了别的propersor的申请,并且发现自己的申请数,不过半,那么就会重新进入第一阶段,否则直接结束,该propersor的提议得到发行,acceptor记录这个提议,并告诉所有的propersor,某个提议已得到批准。

而acceptor会在接收提议和编号的过程按规则行事,如果自己为空,则接收该议题和编号,如果不为空,且发现已有的编号大于申请者的编号则会拒绝,如果小于,则会更新自己的编号和议题。,不过都会返回自己的所拥有的的编号和议题

原文地址:https://www.cnblogs.com/feicheng/p/6593087.html