分布式一致性问题经典解决方案(2PC,3PC,Paxos,ZAB)

关于分布式一致性问题不做解释,在长期探索过程中,有几种代表性的解决方案,在这主要说2PC,3PC,Paxos,ZAB。

2PC

2PC(Two-Phase Commit),二阶段提交。目前,绝大多数关系型数据库使用此协议完成分布式事务处理。

协议说明
二阶段提交协议是将事务提交过程分为两个阶段进行处理,其执行流程如下:
阶段一:提交事务请求(投票)

	1.事务询问:协调者向所有参与者发送事务内容,询问是否可以执行事务提交操作,并等待响应
	2.执行事务:参与者执行事务操作,并将Undo和Redo记入事务日志中
	3.各参与者反馈结果:将执行结果提交给协调者(YES/NO)

阶段二:执行事务提交
协调者根据各参与者的反馈决定最终是否进行事务提交。
A.事务提交

	所有参与者返回YES,执行事务提交
	1.发送提交请求:协调者向所有参与者发出commit请求
	2.事务提交:参与者收到commit请求后,正式执行事务提交操作,完成后释放资源
	3.反馈结果:参与者完成事务提交后,向协调者发送Ack消息
	4.完成事务:协调者收到所有参与者反馈的Ack消息后,完成事务提交

B.中断事务

	有参与者返回NO,或等待结果超时后,中断事务
	1.发送回滚请求:协调者向所有参与者发出Rollback请求
	2.事务回滚:参与者收到Rollback请求后,利用Undo信息执行回滚操作,完成后释放资源
	3.反馈结果:参与者完成事务回滚后,向协调者发送Ack消息
	4.中断事务:协调者收到所有参与者反馈的Ack消息后,完成事务中断	

优点

	原理简单,实现方便

缺点

	1.同步阻塞:执行过程中,所有参与该事务操作的逻辑处于阻塞状态,无法执行其他任务操作
	2.单点问题:协调者出现问题,流程将无法流转。当在阶段二出现问题,会让其他参与者处于锁定状态,无法继续完成事务操作。如果提交事务时出现问题,只有部分参与者收到commit请求,导致数据不一致
	3.脑裂:由于网络分区,某些参与者未收到commit请求,导致数据不一致。
	4.太过保守:任一节点失败导致整个事务失败

3PC

3PC(Three-Phase Commit),三阶段提交。基于2PC的问题,进行了改进形成了3PC协议。

协议说明
三阶段提交协议将2PC的提交事务请求阶段一分为二,形成CanCommit,PreCommit,doCommit三个阶段。
阶段一:CanCommit

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值