加入收藏 | 设为首页 | 会员中心 | 我要投稿 广安站长网 (https://www.0826zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

VS Code的7个开源替代品

发布时间:2021-02-19 16:30:54 所属栏目:评论 来源:互联网
导读:流程 Paxos 协议一轮一轮的进行,每轮都有一个编号。每轮Paxos 协议可能会批准一个value,也可 能无法批准一个value。如果某一轮Paxos 协议批准了某个value,则以后各轮Paxos 只能批准这个 value。上述各轮协议流程组成了一个Paxos 协议实例,即一次Paxos 协

流程

Paxos 协议一轮一轮的进行,每轮都有一个编号。每轮Paxos 协议可能会批准一个value,也可 能无法批准一个value。如果某一轮Paxos 协议批准了某个value,则以后各轮Paxos 只能批准这个 value。上述各轮协议流程组成了一个Paxos 协议实例,即一次Paxos 协议实例只能批准一个value,这也是Paxos 协议强一致性的重要体现。每轮Paxos 协议分为阶段,准备阶段和批准阶段,在这两个阶段Proposer 和Acceptor 有各自的处理流程。

流程:Proposer 的流程 (准备阶段)

  1. 向所有的Acceptor 发送消息“Prepare(b)”;这里b 是Paxos 的轮数,每轮递增
  2. 如果收到任何一个Acceptor 发送的消息“Reject(B)”,则对于这个Proposer 而言本轮Paxos 失败,将轮数b 设置为B+1 后重新步骤1;(批准阶段,根据收到的Acceptor 的消息作出不同选择)
  3. 如果接收到的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);
  4. 如果收到Nack(B),将轮数b 设置为B+1 后重新步骤1;

流程:Accpetor 流程 (准备阶段)

  1. 接受某个Propeser 的消息Prepare(b)。参数B 是该Acceptor 收到的最大Paxos 轮数编号;V 是Acceptor 批准的value,可以为空 1.1 如果b>B,回复Promise(b, V_B),设置B=b; 表示保证不再接受编号小于b 的提案。1.2 否则,回复Reject(B) (批准阶段)
  2. 接收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 的变化。

  1. 初始状态
  2. Proposer 向所有Accpetor 发送“Prepare(1)”,所有Acceptor 正确处理,并回复Promise(1, NULL
  3. Proposer 收到5 个Promise(1, NULL),满足多余半数的Promise 的value 为空,此时发送 Accept(1, v1),其中v1 是Proposer 选择的Value。
  4. 此时,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 三个字母分别代表了分布式系统中三个相互矛盾的属性:

  1. Consistency (一致性):CAP 理论中的副本一致性特指强一致性(1.3.4 );
  2. Availiablity(可用性):指系统在出现异常时已经可以提供服务;
  3. 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 机制的因素


(编辑:广安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读