目录
一、2PC
1.1、提交事务请求(投票阶段)
事务询问->执行事务->反馈事务询问
事务询问:由协调者向所有参与者发送事务内容,询问是否可以执行事务提交操作
执行事务:由参与者执行事务操作,并将Undo(拒绝)和Redo(准备好,将要操作)信息记入事务日志中
反馈事务询问:由参与者给协调者反馈给协调者事务的执行结果,如果执行成功反馈YES,否者反馈NO
1.2、执行事务提交
该阶段拥有两种操作:执行事务提交、中断事务
执行事务提交:发送提交请求->事务提交->反馈事务提交结果->完成事务
中断事务:发送回滚请求->事务回滚->反馈事务回滚结果->中断事务
总结:二阶段提交将事务处理过程分成两个过程,分别是投票和执行两个阶段,其核心是对每个事务先尝试后提交的处理方式,该提交方式是一个强一致性的算法。
优点:原理简单、实现方便
缺点:同步阻塞、单点问题、脑裂、太过保守
二、3PC
21、CanCommit(提交询问)
事务询问:协调者向参与者发送一个包含事务内容的CanCommit请求,询问是否可执行事务提交操作
反馈事务询问结果:参与者返回CanCommit询问结果
2.2、PreCommit
包含两种操作:执行事务预提交和中断事务
执行事务预提交:发送预提交请求->参与者事务预提交->参与者反馈预提交结果
中断事务:发送中断请求->中断事务
2.3、DoCommit(事务提交)
包含两种操作:执行提交、中断事务
执行提交:发送提交请求->事务提交->反馈事务提交结果->完成事务
中断事务:发送中断请求->事务回滚->反馈事务回滚结果->中断事务
总结:相比于两阶段提交,增加一个询问阶段,该阶段的好处是可以让协调者尽早的发现发问题。同时在询问阶段不会锁定资源,降低资源的锁定范围。
二阶段与三阶段提交

本文介绍了2PC(二阶段提交)与3PC(三阶段提交)的基本概念、执行流程及优缺点。2PC分为投票和执行两个阶段,通过尝试提交来确保事务一致性;3PC在此基础上增加了提交询问阶段,有助于提前发现问题并减少资源锁定。
1200

被折叠的 条评论
为什么被折叠?



