流程
Paxos 协议一轮一轮的进行,每轮都有一个编号。每轮Paxos 协议可能会批准一个value,也可 能无法批准一个value。如果某一轮Paxos 协议批准了某个value,则以后各轮Paxos 只能批准这个 value。上述各轮协议流程组成了一个Paxos 协议实例,即一次Paxos 协议实例只能批准一个value,这也是Paxos 协议强一致性的重要体现。每轮Paxos 协议分为阶段,准备阶段和批准阶段,在这两个阶段Proposer 和Acceptor 有各自的处理流程。
流程:Proposer 的流程 (准备阶段)
-
向所有的Acceptor 发送消息“Prepare(b)”;这里b 是Paxos 的轮数,每轮递增
-
如果收到任何一个Acceptor 发送的消息“Reject(B)”,则对于这个Proposer 而言本轮Paxos 失败,将轮数b 设置为B+1 后重新步骤1;(批准阶段,根据收到的Acceptor 的消息作出不同选择)
-
如果接收到的Acceptor 的“Promise(b, v_i)”消息达到N/2+1 个(N 为Acceptor 总数,除法取整, 下同);v_i 表示Acceptor 最近一次在i 轮批准过value v。3.1 如果收到的“Promise(b, v)”消息中,v 都为空,Proposer 选择一个value v,向所有Acceptor 广播Accept(b, v);3.2 否则,在所有收到的“Promise(b, v_i)”消息中,选择i 最大的value v,向所有Acceptor 广播消息Accept(b,v);
-
如果收到Nack(B),将轮数b 设置为B+1 后重新步骤1;
流程:Accpetor 流程 (准备阶段)
-
接受某个Propeser 的消息Prepare(b)。参数B 是该Acceptor 收到的最大Paxos 轮数编号;V 是Acceptor 批准的value,可以为空 1.1 如果b>B,回复Promise(b, V_B),设置B=b; 表示保证不再接受编号小于b 的提案。1.2 否则,回复Reject(B) (批准阶段)
-
接收Accept(b, v), 2.1 如果b < B, 回复Nack(B),暗示proposer 有一个更大编号的提案被这个Acceptor 接收了 2.2 否则设置V=v。表示这个Acceptor 批准的Value 是v。广播Accepted 消息。
例子
基本例子里有5 个Acceptor,1 个Proposer,不存在任何网络、宕机异常。我们着重考察各个Accpetor 上变量B 和变量V 的变化,及Proposer 上变量b 的变化。
-
初始状态
-
Proposer 向所有Accpetor 发送“Prepare(1)”,所有Acceptor 正确处理,并回复Promise(1, NULL
-
Proposer 收到5 个Promise(1, NULL),满足多余半数的Promise 的value 为空,此时发送 Accept(1, v1),其中v1 是Proposer 选择的Value。
-
此时,v1 被超过半数的Acceptor 批准,v1 即是本次Paxos 协议实例批准的Value。如果Learner 学习value,学到的只能是v1
在同一个Paxos 实例中,批准的Value 是无法改变的,即使后续Proposer 以更高的序号发起Paxos 协议也无法改变value。Paxos 协议的核心就在于“批准的value 无法改变”,这也是整个协议正确性的基础。
Paxos 协议是被人为设计出来,其设计过程也是协议的推导过程。Paxos 协议利用了Quorom 机 制,选择的W=R=N/2+1。
简单而言,协议就是Proposer 更新Acceptor 的过程,一旦某个Acceptor 成功更新了超过半数的Acceptor,则更新成功。Learner 按Quorum 去读取Acceptor,一旦某个value 在超过半数的Proposer 上被成功读取,则说明这是一个被批准的value。协议通过引入轮次,使得高轮次的提议抢占低轮次的提议来避免死锁。协议设计关键点是如何满足“在一次Paxos 算法实例过程中只批准一个Value”这一约束条件。
2.9 CAP
CAP 理论的定义很简单,CAP 三个字母分别代表了分布式系统中三个相互矛盾的属性:
-
Consistency (一致性):CAP 理论中的副本一致性特指强一致性(1.3.4 );
-
Availiablity(可用性):指系统在出现异常时已经可以提供服务;
-
Tolerance to the partition of network (分区容忍):指系统可以对网络分区(1.1.4.2 )这种异常情 况进行容错处理;
CAP 理论指出:无法设计一种分布式协议,使得同时完全具备CAP 三个属性,即1)该种协议下的副本始终是强一致性,2)服务始终是可用的,3)协议可以容忍任何网络分区异常;分布式系统协议只能在CAP 这三者间所有折中。
热力学第二定律说明了永动机是不可能存在的,不要去妄图设计永动机。与之类似,CAP 理论的意义就在于明确提出了不要去妄图设计一种对CAP 三大属性都完全拥有的完美系统,因为这种系统在理论上就已经被证明不存在。
-
Lease 机制: Lease 机制牺牲了部分异常情况下的A,从而获得了完全的C 与很好的P。
-
Quorum 机制: Quorum 机制,在CAP 三大因素中都各做了折中,有一定的C,有较好 的A,也有较好的P,是一种较为平衡的分布式协议。
-
两阶段提交协议: 两阶段提交系统具有完全的C,很糟糕的A,很糟糕的P。
-
Paxos 协议:同样是强一致性协议,Paxos 在CAP 三方面较之两阶段提交协议要优秀得多。Paxos 协议具有 完全的C,较好的A,较好的P。Paxos 的A 与P 的属性与Quorum 机制类似,因为Paxos 的协议本 身就具有Quorum 机制的因素
(编辑:广安站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|