Paxos Made Simple

By Leslie Lamport

摘要

Paxos算法,用朴素的英语展现出来时,是非常简单的。

内容

Part 1. 介绍

Paxos算法被用来实现一个容错的分布式系统,人们认为它很难理解,也许是因为最初的描述对于许多读者来说难以理解[5]。实际上,它是最简明的一种分布式算法了。它的核心是一致性算法——[5]中的『synod』算法。下一节显示了这个一致性算法几乎不可避免地遵从了我们想要它满足的性质。最后一段解释了完整的Paxos算法,它是通过『consensus to the state machine』方法的直接应用得到的,这个方法被用来建立分布式系统。该方法应该为人熟知,因为它可能是关于分布式系统的被最常引用的文献的主题[4]。

Part 2. 一致性算法

2.1 问题

假设有一批process,这批process都能推举数值。一个一致性算法保证被推举数值中的单个值被选中。如果没有任何值被推举,也就不应该有任何值被选中。如果一个值被选中,所有process都应当能知道被选中的值。对一致性的安全性要求有:

  • 只有被推举的值会被选中
  • 只有一个值会被选中
  • 直到一个值确实被选中了,process才知道这个值被选中

我们不会试图指明一个精确的存活性要求。然而,目标是要保证最终某个被推举的值被选出,而且,如果一个值被选出,process最终能获得这个值。
我们将用三个代理类来扮演一致性算法中的三个角色:提议者、批准者、接收者。在一个实现中,一个单独的process可能不止扮演一个代理,但是我们并不关心代理与process的映射。
假定代理能通过发送消息与另一个代理通信,我们用惯常的异步、非拜占庭式的模型,在这个模型里:

  • 代理以任意的速度操作,可能由于停机而失败,也可能重启。因为所有的代理在一个值被选出并重启后,都可能失败。除非一些信息被失效或者重启的代理记录下来,否则不可能有解决办法。
  • 消息传输过程中可能耗时任意长时间,可能重复、丢失,但是内容不能损坏。
2.2 选出一个值

你可能感兴趣的:(Paxos Made Simple)