paxos协议 对比_分布式一致性协议三部曲-深入理解一致性协议Paxos

CAP二阶段提交协议(2PC)协议详情改进缺陷参与者 还都处于锁定事务资源的状态中,而无法继续完成事务操。尽管协调者挂掉后可以重新选举一个协调者,但是无法解决因为协调者宕机导致的参与者处于阻塞状态的问题。三阶段提交(3PC)协议详情改进缺陷Paxos协议详情proxs的核心如何确定编号实例推演分析Paxos的落地中心化分布式一致性协议(Multi-Poxis, Zab, Raft)活锁优化多条数据记录同步优化Learn优化(数据确认)Leader模式"幽灵复现"问题Mutlti-Paxos下存在Leader切换情况,并且每个记录(Paxos实例)是完全独立的,因而是可能存在非顺序确认的,当然同一个Leader下日志是有顺序的,这个有点像多线程并发执行,同一个线程里的顺序是确定,线程之间的执行顺序谁知道呢?日志非顺序确认,就会出现客户端开始访问不到第7条记录,但是能访问到第20条记录,然后后面7确认后,客户端又能访问到第7条日志了。具体示例如下:去中心分布式一致性协议(PBFT)标准Paxos交互图带confirm的paxios交互图PBFT

从上面来看,一次提议需要5次交互,在中心化系统中,节点之间有专线连接,时延一般较低,可能还好。但在分布式系统中,节点之间可能分布在不同的个人设备上,时延往往较大,因而需要减少交互次数。PBFT实现上就是通过广播来减少交互次数的,即Acceptor不仅仅和proposer交互还和其他Acceptor交互。Basic-Paxos下,Accepter接收到的Accept消息是Proposer统计promise消息发出来的,在PBFT下,Acceptor之间互相广播promise消息,因而自己就可以统计自己收集到的promise消息,如果超过多数promise消息就可以直接accept并发出Accepted消息。

优化后的交互图

当然在PBFT里,这些交互过程名称有所变化。propose叫做pre-prepare, promise叫做prepare, accepted叫做commit, 当节点收到2/3*n+1各节点的commit即认为数据被confirm了,可以直接reply。

而区块链TenderMint里的PBFT协议里各个阶段的名字又不一样,propose这个名字是一样的,promise对应prevote, accepted对应precommit, 节点等到2/3*n+1个节点的precommit即认为数据被chosen(confirm), 执行commit将数据写入到区块里。

分布式一致性协议算是一个比较复杂的系统,需要多思考讨论,欢迎文章下面留言讨论

欢迎关注「一点码客」

更多关注微信公众号:jiuwenwang

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值