Paxos算法总结
上⼀篇讲述了两个经典的分布式⼀致性协议(2PC、3PC),这篇博客开始讲解paxos协议,paxos算法是⽬前公认的解决分布式⼀致性问题最有效的算法之⼀。
1、起源
拜占庭将军问题
提及paxos协议的起源,⾸先得说说这个“拜占庭将军”问题,这个问题实际上是分布式数据⼀致性问题的⼀个抽象故事。
故事中的通讯员就是所谓的通信信道,拜占庭故事的结局就是在这种情况下将军之间不可能接收到⼀个完全正确的决定。也就是说在分布式系统中,试图在异步系统和不可靠通道上达到⼀致性状态是不可能的。
有⼈就会问,既然是不可能,那研究的分布式⼀致性协议炒枳壳的功效与作用
有啥⽤呢?
——实际⼯程上,由于信道编码纠错等机制,我们可以假设所有信道传输的消息是完整的,是没有被篡改过的,也就是故事中的通讯员不能篡改消息。考虑到这种实际场景下,我们研究的分布式⼀致性协议才有⽤处。
那么当信道不存在篡改的情况用成语
,该场景下⼜是如何解决上述问题的呢?英文自我介绍大学生
——lamport在1990提出了paxos算法解决上述问题。
lamport将上述的问题设想了这么⼀个场景:
(多提⼀句,据说该场景是考古⼯作者发现真是会议⼿稿推测的,并不是lamport凭空设想的)
这个场景就具体代表了分布式系统中,多个节点中,数据如何保持⼀致性,多个节点最陶渊明名句
终对于某个数
据值能够保证⼀致,也就是对应场景中法令是唯⼀有效的,不冲突。
如何解决上述的正确法令的产⽣,paxos算法。
2、算法陈述冬季训练
paxos算法有着严格的数据公式的证明,但太过于复杂,能以理清,这⾥我们不在讨论具体春开头的四字成语
的证明过程,只给出paxos算法是如隆裕
何从众多提案中最终选择⼀个统⼀提案的过程。
⾸先和上述的故事场景类似,存在⼀个提出者(Propor)和接收者(Acceptor),同样,整个选举的过程也分为两个阶段:
通过上述的两个阶段,即可保证最终可以得到⼀个统⼀的提案。
有⼈会问,现在知道了这个paxos算法,但是到底怎么⽤,是怎么⼀回事呢??
——在设计分布式系统的时候,我们可以将每个节点向管理节点选举时,按照上述提交者的步骤渺小
,将每个消息就加上对应的编号,同样,管理节点接收到信息,也按照上述的步骤进⾏返回,最后即可按照此算法就多个节点同⼀个数据值达到⼀致。
3、paxos算法优缺点
paxos算法的优点很明显,按照此⽅法可以对多个数据值达到⼀致,收敛较好。
paxos算法的缺点即存在活性问题:考虑到⼀种极端的计算机的英语
情况下,有两个propor依次提出了⼀系列编号递增的议案,但是最终paxos⽆法形成最终的议案。具体场景如下:
没错,在这种情况下,提案只会不断的死循环,提出,被抛弃,再次提出,被抛弃。。。⽆法保持活性。。。
解决办法:
为了保持活性,避免上述的问题,就必须选择⼀个主Propor,并规定只能由主Propor才能提出议案,只有主能提出议案,那么就算主被抛弃了,下次也会提出更⾼议案,⽽其他⾮主不能再次提出更⾼的议案,这样就不会陷⼊死循环中,从⽽避免了上述的问题。
总结:
通过选择⼀个主Propor,并规定只能由主Propor才能提出土豆粉煮多久熟
议案,整个paxos算法就可以保持活性。
参考:
《从paxos到zookeeper》