Paxos
Paxos 是一个分布式系统共识算法,由 Leslie Lamport 在1990年代提出。它被设计用来处理分布式系统中的一致性问题,确保在一个包含多个节点的网络中,即使部分节点发生故障或者网络出现问题,系统仍能达成一致和正确的决定。Paxos 主要用于日志复制或系统状态的一致性维护,是构建可靠分布式系统的基础算法之一。
Paxos 的基本概念
Paxos 算法主要分为三种角色:
- Proposer(提议者):提议某个值应该被系统的所有成员接受。
- Acceptor(接受者):接受提议者提出的值。这些节点对提议值进行投票,决定是否接受该值。
- Learner(学习者):学习已被多数接受者接受的值,并最终从接受者那里学到系统的决定结果。
Paxos 的工作流程
Paxos 的执行可以分为两个主要阶段:
-
准备阶段(Prepare phase):
- Proposer 选择一个提案编号(必须唯一且递增),然后向 Acceptor 发送一个包含这个编号的准备请求(Prepare request)。
- Acceptor 收到准备请求后,如果该请求的编号高于它之前响应的任何请求的编号,它将承诺不再接受编号小于此编号的任何其他提议。同时,Acceptor 将告诉 Proposer 它已经接受的最高编号提议的值(如果有的话)。
-
接受阶段(Accept phase):
- Proposer 在第一阶段结束后,根据 Acceptor 返回的信息决定提议的值。如果多数 Acceptor 返回了之前接受的值,Proposer 应当提议其中编号最高的那个值;如果没有 Acceptor 返回之前接受的值,Proposer 可以自由决定提议的值。
- 然后,Proposer 向所有 Acceptor 发送接受请求(Accept request),包含提案编号和提议的值。
- Acceptor 收到接受请求后,只有在它仍然承诺接受这个编号(即没有承诺过更高编号的提案)的情况下,才会接受这个提案。
Paxos 的特点和挑战
- 可靠性:即使有节点失败,只要大多数节点正常工作,系统仍然可以达成一致。
- 活锁:Paxos 算法可能会因为多个 Proposer 同时试图完成各自的提议而导致活锁,这需要通过算法或实现中的优化来解决。
- 效率:标准 Paxo

本文探讨了Paxos、Raft、Zab这三种分布式一致性算法,以及与传统事务一致性算法2PC和3PC的区别,重点在于它们在无中心协调者下的高可用性和容错性,以及在不同应用场景中的优缺点。
最低0.47元/天 解锁文章
7835

被折叠的 条评论
为什么被折叠?



