从Paoxs算法与Zab协议关系讲起:共识与一致性的区别和联系

paxos算法是一组共识算法的集合,包含basic paxos,multi-paxos等。

basic paxos 算法有难以实现,两次RPC提交,容易出现活锁的缺点。二次提交中prepare的目的其实就是多个proposer通过条件约束(比如accept承诺不回应<=N提案等)尽可能达成共识,然后令多数派通过批准(虽然有可能发生活锁,通过加入随机睡眠可以很容易解决)。假如直接进入accept阶段,就会缺少prepare的回复之前的值,给予修正value值的机会,比如第二个用户序号为N+1,按照承诺应该批准,但是N+1号议案内容极有可能和N号议案不同,这也就违背了paxos算法的约束:一次paxos算法只能批准一个value。

如果proposer只有一个,那么该者提出的议案肯定会被批准,所以prepare阶段可以省略,直接进入批准阶段,消息延迟也减少一半。加入存在多个proposer,可以通过选举产生一个leader,然后所有议案只能通过leader来提出,这就是multi-paxos。以multi-paxos为基础的算法有许多,比如raft算法以及zab协议。比如zab协议,把proposer accepter learner多个角色合并到一个实例中,通过选举选出一个leader来提出数据更新同步的议案。

到这一步仅仅是达到了数据共识,如果要做到数据一致,还需要client的参与。在数据更新提案请求批准时,只要多数派回应,leader就决定提交,但是读的时候还是有可能会读出多种结果,所以这里就需要通过某种机制来读取正确数据,比如从多数派读取数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值