一致性协议

2PC(Two-Phase Commit)

  • 阶段一:提交事务请求(准备阶段)
  • 阶段二:执行事务提交(执行阶段)
    在这里插入图片描述
    在这里插入图片描述
  • 优点:原理简单,实现方便
  • 缺点:同步阻塞,协调者单点问题,脑裂,太过保守

3PC(Three-Phase Commit)

  • 将二阶段提交协议的“提交事务请求”过程一分为二,形成了由CanCommit、PreCommit、doCommit三个阶段组成的事务处理协议
    在这里插入图片描述
  • 优缺点:相对于2PC,3PC对于协调者(Coordinator)和参与者(Partcipant)都设置了超时时间,而2PC只有协调者才拥有超时机制。3PC主要解决了协调者宕机之后事务阻塞的问题,因为一旦参与者无法及时收到来自协调者的信息之后,他会默认执行commit。而不会一直持有事务资源并处于阻塞状态。缓解了同步阻塞,协调者单点问题,但是这种机制也会导致数据一致性问题

Paxos算法

Paxos算法是分布式一致性算法用来解决一个分布式系统如何就某个值(决议)达成一致的问题。一般用来解决选举问题

  • Proposer(投票发起者):Proposer负责提出提案
  • Acceptor(投票接受者):Acceptor负责对提案作出裁决(accept与否)
  • Learner(节点学习者):learner负责学习提案结果

Paxos算法类似于两阶段提提交,其算法执行过程分为两个阶段。具体如下:

  • 阶段一(prepare阶段):
    • Proposer选择一个提案编号N,然后向半数以上的Acceptor发送编号为N的Prepare请求:Proposal(N)。
    • 如果一个Acceptor收到一个编号为N的Prepare请求:
    • 若小于它已经响应过的请求,则拒绝,不回应或回复error。
    • 若N大于该Acceptor已经响应过的所有Prepare请求的编号(maxN),那么它就会将它已经接受过的编号最大的提案作为响应反馈给Proposer,同时该Acceptor承诺不再接受任何编号小于N的提案。
    • 如果还没有的accept提案的话返回{pok,null,null}
  • 阶段二(accept阶段):
    • 如果一个Proposer收到半数以上Acceptor对其发出的编号为N的Prepare请求的响应,那么它就会发送一个针对[N,V]提案的Accept请求给半数以上的Acceptor。注意:V就是收到的响应中编号最大的提案的value,如果响应中不包含任何提案,那么V就由Proposer自己决定。
    • 如果Acceptor收到一个针对编号为N的提案的Accept请求,只要该Acceptor没有对编号大于N的Prepare请求做出过响应,它就接受该提案。
    • 如果N小于Acceptor以及响应的prepare请求,则拒绝,不回应或回复error(当proposer没有收到过半的回应,那么他会重新进入第一阶段,递增提案号,重新提出prepare请求)。

Learner学习被选定的value

  • Acceptor可以将批准的提案发送给一个主Learner集合,该集合中每个Learner都可以在一个提案被选定后通知其他的Learner。这个Learner集合中的Learner个 数越多,可靠性就越好,但同时网络通信的复杂度也就越高
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值