PAXOS 共识算法简介
PAXOS 共识算法是分布式系统中一项强有力的工具,旨在确保网络中的所有机器(节点)在面临网络故障或节点失效等挑战时,仍能就某个单一数值达成一致。
- PAXOS 的核心目标是在分布式环境的多节点间确定一个唯一值,即使发生故障也能达成共识。
- 它确保所有节点拥有相同的数据记录,从而防止不一致性的产生。
- 即使部分节点发生故障,系统仍能维持其正常运行特性。
- PAXOS 以其复杂性著称。理解消息传递的错综复杂以及各种故障场景往往是一项极具挑战性的任务。
虽然 PAXOS 为分布式共识提供了坚实的解决方案,但其复杂性也构成了一定的门槛。其他受 PAXOS 启发的算法(如 Raft)致力于以更简洁的设计实现类似的目标。
PAXOS 算法的历史回顾
Leslie Lamport 于 1989 年发明了 PAXOS。其灵感源自一个运作中的议会概念,即便议员来去匆匆,决策依然能够制定。该算法于 1998 年正式在研究论文中发表。PAXOS 这个名字本身就是指希腊岛屿 Paxos 上的一个古议会,那里以其复杂的政治局势而闻名。
起源 (1989)
- Leslie Lamport 最初是在 1989 年构想出 PAXOS 的。有趣的是,它最初并非旨在作为分布式系统的解决方案。
- Lamport 当时的目的是为了证明一个否定性结果,即旨在展示具有特定属性的共识算法是不可能存在的。
- 然而,在此过程中,他意外发现了 PAXOS 作为一个反例,证明了共识确实是可实现的。
虚构的议会 (1989)
- Lamport 最初对 PAXOS 的描述非常独特。他将其呈现为一种受希腊 Paxos 岛上虚构议会启发的协议。
- 这个据称运作的议会,其成员频繁更替(具有“徘徊的倾向”)。消息可能会丢失,立法者也可能健忘。
- 通过这一类比,Lamport 旨在解释如何在不可靠的环境和不可靠的参与者之间达成共识。
论文发表历程 (1990-1998)
- Lamport 在 1990 年撰写了一篇关于 PAXOS 的研究论文,但并未立即发表。初步的反响平平。
- 一些审稿人发现由于论文依赖于虚构的议会设定,难以理解。另一些人则质疑其实用性。
- Lamport 经历了长达八年的延误,直到 1998 年这篇论文才最终发表在科学期刊上。
初期的挑战与认可
- 发表后,PAXOS 最初难以获得关注。算法的复杂性质及其不寻常的呈现方式使其难以被理解。
- 然而,PAXOS 在确保分布式系统数据一致性方面的潜在威力逐渐获得了认可。
PAXOS 简化版 (2001)
- 为了提供更清晰的解释,Lamport 于 2001 年发表了一篇后续论文,题为“Paxos Made Simple”。
- 这篇论文以更直白的方式阐述了 PAXOS,专注于核心原则,摒弃了虚构议会的设定。
PAXOS 的遗产
- PAXOS 为其他共识算法(如 Raft)的发展奠定了基础。这些算法旨在实现与 PAXOS 类似的目标,但设计更为简单。
- 尽管复杂,PAXOS 仍然是分布式系统领域的重大贡献。它展示了一种在不可靠环境中确保达成一致的强大方法。
PAXOS 算法的目标
PAXOS 专注于在分布式系统中实现三个核心目标,但其设计也间接促成了其他几个重要方面。让我们来详细拆解一下 PAXOS 的目标:
核心目标
- 一致性: 这是 PAXOS 最基本的目标。它确保系统中的每个节点最终都能就某个特定数据项的同一个值达成收敛。这防止了不一致性,并保证所有参与者拥有相同的最新信息。
- 活性: PAXOS 保证进度。只要网络保持大部分功能正常且有足够数量的节点在运行,最终就会做出决定。这防止了系统因临时网络问题或无响应节点而陷入停滞。
- 安全性: PAXOS 优先考虑选择一个有效的值。它确保达成一致的值必须源自某个节点的提议。这消除了系统采用随机或无效值的可能性,从而保障了数据完整性。
次要目标
- 容错性: 通过确保一致性和活性,PAXOS 固有地增强了容错能力。只要大多数节点保持运行,即使部分节点发生故障,系统也能继续操作。这使得系统具有强大的韧性。