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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

一、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(事务提交)

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

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

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

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TCC(Try-Confirm-Cancel)是一种分布式事务管理机制,它采用“阶段提交“补偿事务”种方式,确保分布式事务的原子性一致性。 TCC的核心思想是将一个复杂的事务拆分成三个步骤:试图执行(Try)、确认执行(Confirm)取消执行(Cancel)。这三个步骤分别对应“阶段提交”(2PC)中的准备阶段提交阶段回滚阶段TCC有以下三个步骤: 1.试图执行(Try):首先,在事务发起方(服务A)执行操作前,会向参与方(服务B)发送请求,询问其是否能够执行当前操作。如果参与方确认可以执行,则进行预留资源,记录操作信息;如果参与方回应拒绝,则整个事务将会回滚。 2.确认执行(Confirm):当所有参与方都能够执行操作时,事务发起方会通知各个参与方提交执行请求,对应2PC中的“提交事务”阶段提交完成后,事务进入“已提交”状态。 3.取消执行(Cancel):如果有任何一个参与方在“试图执行”或“确认执行”阶段发生异常,或者在“确认执行”之前事务发起方主动取消了事务,那么事务将进入“已撤销”状态。在“已撤销”状态下,事务发起方可以向各个参与方发送请求进行事务回滚操作。 TCC采用“补偿事务”来确保一致性,即当某个参与方在Confirm阶段发生异常,无法提交时,其他参与方会执行相反的操作,将之前预留的资源释放掉,从而保证整个事务的原子性一致性。 总的来说,TCC机制是一种高可靠、高性能的分布式事务管理机制,适用于对事务数据的正确性一致性要求较高的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值