Paxos于1990年提出,基于消息传输和高度容忍度的一致性算法。它是当前被认为是最有效的分布式一致性的最有效算法之一。
1982年,兰伯特(Lambert)发表了《拜占庭将军》(Byzantine Generals Privem)的论文,并提出了计算机容忍理论,即著名的拜占庭问题:
拜占庭帝国有许多部队,必须在不同的军队之间制定统一的行动计划,以决定游行或撤退。此外,每支军队都被地理位置分开,依靠军队通讯员进行交流。可能是记者中的叛徒,这一消息可能被中途篡改。如何在沟通过程中确保新闻的一致性?
由于我们的大多数分布式系统都在LAN中,因此新闻篡改并不常见。我们通常认为拜占庭的问题在实际工作中不存在。
1990年,兰伯特(Lambert)提出了一种理论一致性解决方案,同时给出了严格的数学证明。它也类似于拜占庭的问题,拜占庭的问题以故事的形式描述以描述这种算法:
古希腊有一个叫做Paxos的岛屿。该岛采用议会通过法律的形式。议会通过Messenger通过了信息。值得注意的是,成员和使者是一部分 - 他们将随时离开会议厅以设置信息可能会重复通过使者通过,或者他们已经消失了。因此,议会协议要求在这种情况下可以正确保证法律,并且不会发生任何冲突。
Paxos算法的名称是从这个岛上取的。
兰伯特公认的晦涩算法描述知道它仅在1998年才被接受。从那时起,PAXOS算法就被计算机科学家接受,以解决分布式系统的一致性问题。
2001年,兰伯特(Lambert)发布了Paxos Made Simple,它以一种简单的语言重新描述了该算法。
假设可以进行一组流程,那么必须保证以下几点以保持一致性算法:
1)只能选择这些建议之一。
2)如果提出了提议,将没有提议。
3)如果选择了建议,则该过程应能够获取所选的建议信息。
安全条件如下:
1)只能选择建议的建议。
2)仅选择一个值。
3)如果该过程认为选择了该提案,则该提案是真正选择的提案。
在Paxos算法中,有三个角色:
1)提议者提议
2)受体接收器
3)学习者学习者
该提案由多个登录器选择。单个受体有一个点问题。我如何认为选择了此建议?假设有一个受体集,以及当多个访问者选择此建议时,当登录器达到一定数字时,我们确定该提案是成功的。
总体而言,是一个类似于两个阶段的算法执行过程:
阶段1:
1.提议者提出了一个提议,其中M(n),然后将数字M(n)发送到该帐户的一半以上2。受体收到提案编号m(n),数字大于其响应的所有数字,然后将其响应作为提议者的响应而响应最大数字的提议。将通过提案小于m(n)。
阶段2:
1.如果提议者收到一半以上访问者返回的响应号m(n),它将发送[m(n),v(n)]提案的访问请求。
2.如果受体收到对[m(n),v(n)]提案的接受请求,只要访问者未回复大于m(n)的准备请求,则可以通过此提案。
如何获得学习者的收购?您可以使用以下解决方案:
让所有受体将他们的建议批准发送给学习者,在每个领导之间相互交流。勋爵学习者通知其他学习者。
如果要高于计划的主要学习者的单点,则需要学习者的集合。
分布式算法通常具有两个关键功能,安全性(保证不会发生)和活动(保证肯定会发生)。
如果任何提议者都可以提交提案,那么先前的实施计划将导致整个算法死亡。
例如:A提出了M1提案,发布了准备请求,收到并回应的受体。目前,B提出了M2,并且受体也收到并做出了回应。当A在第二阶段发起该提案时,发现M1被丢弃,并发出了M3准备请求,从而导致了死周期。
目前,选举需要最多的建议者。只有主要提议者才能与一半以上的受体进行通信。只要主要提议者提出提议,就会接受。提案者发现目前有更大的提案时,将丢弃一个小提案,并选择更大的建议。
Paxos引入了太多的概念,其中一些遵守大多数。Paxos支持节点字符的旋转,以避免分布式单点。
目前,它是最好的分布式算法之一。