两阶段提交、三阶段提交和TCC

目录

 

一、2PC

1.1、提交事务请求(投票阶段)

1.2、执行事务提交


一、2PC

1.1、提交事务请求(投票阶段)

事务询问->执行事务->反馈事务询问

事务询问:由协调者向所有参与者发送事务内容,询问是否可以执行事务提交操作

执行事务:由参与者执行事务操作,并将Undo(拒绝)和Redo(准备好,将要操作)信息记入事务日志中

反馈事务询问:由参与者给协调者反馈给协调者事务的执行结果,如果执行成功反馈YES,否者反馈NO

1.2、执行事务提交

该阶段拥有两种操作:执行事务提交、中断事务

执行事务提交:发送提交请求->事务提交->反馈事务提交结果->完成事务

中断事务:发送回滚请求->事务回滚->反馈事务回滚结果->中断事务

总结:二阶段提交将事务处理过程分成两个过程,分别是投票和执行两个阶段,其核心是对每个事务先尝试后提交的处理方式,该提交方式是一个强一致性的算法。

优点:原理简单、实现方便

缺点:同步阻塞、单点问题、脑裂、太过保守

二、3PC

21、CanCommit(提交询问)

事务询问:协调者向参与者发送一个包含事务内容的CanCommit请求,询问是否可执行事务提交操作

反馈事务询问结果:参与者返回CanCommit询问结果

2.2、PreCommit

包含两种操作:执行事务预提交和中断事务

执行事务预提交:发送预提交请求->参与者事务预提交->参与者反馈预提交结果

中断事务:发送中断请求->中断事务

2.3、DoCommit(事务提交)

包含两种操作:执行提交、中断事务

执行提交:发送提交请求->事务提交->反馈事务提交结果->完成事务

中断事务:发送中断请求->事务回滚->反馈事务回滚结果->中断事务

 

总结:相比于两阶段提交,增加一个询问阶段,该阶段的好处是可以让协调者尽早的发现发问题。同时在询问阶段不会锁定资源,降低资源的锁定范围。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值