分布式事务-CAP定理+BASE理论+解决方案(两阶段提交+TCC事务)

事务就是指一个操作单元,操作单元中的所有操作要么同时成功要么同时失败。单体项目中的事务一般都是使用数据库提供的事务机制来完成的,但是分布式事务的事务参与者位于不同的节点上,也就是分布在不同的服务器上。分布式事务的最大问题就是各子事务的一致性问题,有两种解决思路,AP模式与CP模式,介绍这两种模式首先要介绍CAP定理与BASE理论。

分布式系统有三个指标:Consistency(一致性)(所有节点所有数据一致性)、Availability(可用性)(强调总能返回响应数据,但数据不一定都是最新数据)、Partition tolerance (分区容错性)(网络问题导致分区,仍能提供服务)。CAP定理指的就是这三个要素最多只能同时实现两点,不可能三者同时满足。

对于分布式系统来说,P(网络问题)必须要保证,A和C最多只能满足一个。如果要保证强一致性C,就必须等待网络回复,完成数据同步后,整个集群才对外提供服务,此时服务处于阻塞状态,不可用。如果要保证可用性A,就要马上返回结果,此时各个节点都未完成数据同步,返回的数据不一致。

 BASE理论就是对CAP中一致性和可用性进行权衡的结果,核心思想就是保证系统基本可用和最终一致性。Basically Available (基本可用)(允许损失部分可用性,保证核心可用即可)、Soft State(软状态)(允许出现中间状态,比如临时的不一致状态 )、Eventually Consistent(最终一致性)(软状态结束后,最终数据一致)。

解决方案

1.两阶段提交(CP模式):整个事务分为两个阶段:表决阶段(所有参与者都将本事务预提交,并将能否成功的信息反馈给协调者)+执行阶段(协调者根据所有参与者的反馈,通知所有参与者,步调一致执行提交或回滚)

在两阶段提交协议中,每个参与者都需要向一个协调者发送请求,并根据协调者的指示执行操作。这种方式可以保证在网络分区或节点故障发生时仍能够达成一致,从而保证数据的一致性。但是,在网络分区的情况下,可能会导致协调者失效,从而使得整个系统无法进行后续操作,因此它牺牲了可用性。

CP模式:各个子事务执行后相互等待,同时提交、同时回滚,达到强一致,事务等待过程中,处于弱可用状态。

2.TCC事务(Try Confirm Cancel )(AP模式),属于补偿型分布式事务。

TCC实现分布式事务一共有三个步骤

Try:做业务检查及资源预留(冻结),这个阶段是初步操作,与后续Confirm一起才构成完整业务逻辑

Confirm:确认提交,Try阶段所有分支事务执行成功后开始Confirm(冻结清除)

Cancel:在业务执行错误需要回滚的状态下执行分支事务的业务取消,预留资源释放(释放冻结进行恢复)

TCC是一种补偿性事务处理机制,它通过在业务逻辑中显式地定义Try阶段、Confirm阶段和Cancel阶段来保证分布式系统中的原子性。在TCC事务中,每个参与者都会尝试执行Try操作,确认执行Confirm操作,或者在需要时执行Cancel操作以进行回滚。这种方式下,即使某些节点发生故障,系统仍可以继续运行,牺牲了一致性,保证了可用性和分区容忍性。采用TCC的Confirm和Cancel阶段失败了,需引入重试机制或人工处理。

AP模式:各子事务分别执行和提交,允许出现结果不一致,然后采用弥补措施恢复数据即可,实现最终一致。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值