当前位置: 首页 > 网络应用技术

什么是Paxos算法?

时间:2023-03-06 15:43:48 网络应用技术

  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支持节点字符的旋转,以避免分布式单点。

  目前,它是最好的分布式算法之一。