一致性算法——概述以及2PC,3PC

有Basic paxos以及其变种Fast Paxos和Mutil Paxos,Raft,ZAB,2PC(存在中心节点),3PC(存在中心节点)


2PC–二阶段提交

协调者和参与者

协调者能看到所有的参与者的事务执行情况。

第一阶段:

协调者向参与者发送任务事务,并且等待参与者的回应。

参与者收到事务后,执行事务,写入undo与redo,并且向协调者返回执行结果。

第二阶段:

成功执行:

协调者如果收到所有的参与者的执行成功,将会向所有参与者发送commit指令,参与者收到commit后,会执行事务提交,并且释放执行过程中的资源,并且向协调者发送ack,协调者收到所有ack,代表事务执行成功。

中断事务:

存在参与者返回no,或者超时,那么就会中断事务。

协调者会向参与者发送回滚请求,参与者收到回滚请求后,用undo执行事务回滚,并且释放执行期间的资源。参与者回滚完成后发送ack,协调者收到所有ack代表事务中断。

2PC是强一致性

缺点:同步阻塞(参与者要互相阻塞等待),协调者的单点问题。

如果只有部分参与者收到commit,那么没收到的不提交,会造成数据不一致。

太过保守,只靠超时机制中断,没有容错,一个节点失败都会导致事务失败。


3PC----三阶段提交

第一阶段:CanCommit

协调者向参与者发送事务内容的canComiit请求,询问是否可以执行事务提交,并且等待响应,如果参与者可以执行会回复yes,并进入预备状态。

第二阶段:PreCommit

1.如果canCommit回复的是yes,就会执行事务预执行。

(1)发送预请求提交

协调者发送PreCommit请求,并且进入PreCommit阶段。

(2)事务预提交

接收者收到PreCommit请求后,会执行事务操作,并将Undo和Redo信息记录到日志中。

(3)参与者向协调者反馈响应

如果成功执行返回ack响应。同时等待最终命令。

2.如果回复的是no,就会中断事务。

第三阶段:doCommit进行真正的事务提交

协调者向参与者发送doCommit,参与者收到doCommit后会事务提交,释放资源,然后返回ack。

当有参与者预提交返回了no,协调者会中断事务,向参与者发送abso信息,执行事务回滚。

三阶段提交比二阶段多了一个能否提交的询问的阶段,但是仍然需要阻塞。

二阶段和三阶段都是有主节点(协调者),而Paxos算法是完全分布式的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值