分布式事务

本文介绍了分布式事务的概念,包括其ACID特性,以及在分布式系统中面临的CAP理论挑战。详细阐述了2PC、3PC和TCC三种分布式事务解决方案,其中2PC和3PC为数据库层面,TCC则涉及业务层面的事务管理。

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

分布式:

分布式系统是由多个节点组成的系统,它把一个大业务拆分成多个子业务,每个子业务都是一套独立的系统,子业务之间相互协作最终完成整体的大业务。

分布式事务:

分布式事务顾名思义就是要在分布式系统中实现事务,它其实是由多个本地事务组合而成。

事物的特性

事务就是用户定义的一系列数据库操作,这些操作可以视为一个完成的逻辑处理工作单元,要么全部执行,要么全部不执行,是不可分割的工作单元。

事务实现应该是具备原子性、一致性、隔离性和持久性,简称 ACID。

原子性(Atomicity):可以理解为一个事务内的所有操作要么都执行,要么都不执行。

一致性(Consistency):事务执行结束后数据库的完整性没有破坏。

隔离性(Isolation):指的是多个事务并发执行的时候不会互相干扰,即一个事务内部的数据对于其他事务来说是隔离的。

持久性(Durability):指的是一个事务完成了之后数据就被永远保存下来,之后的其他操作或故障都不会对事务的结果产生影响。

分布式事务的特性

CAP理论指的是在一个分布式系统中,不能同时满足一致性(Consistency)、可用性(Avalibality)、分区容错性(Partition Tolerance)。也称柔性事务,满足ACID则属于刚性事务。

柔性事务:AP,最终一致性,不要求强一致性,而是要求最终一致性,允许有中间状态,也就是Base理论,

刚性事务:CP,强制一致性,通常无业务改造,强一致性,原生支持回滚/隔离性,低并发,适合短事务。

最终一致性:强调系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。其本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

CAP是分布式系统设计理论,BASE是CAP理论中AP方案的延伸.

分布式事务的解决方案

2PC

中文叫二阶段提交,是一种强一致性设计。2PC 引入一个事务协调者的角色来协调管理各参与者(也可称之为各本地资源)的提交和回滚,二阶段分别指的是准备(投票)和提交两个阶段。

准备阶段协调者会给各参与者发送准备命令,同步等待所有资源的响应之后就进入第二阶段即提交阶段(注意提交阶段不一定是提交事务,也可能是回滚事务)。

3PC

3PC 的出现是为了解决 2PC 的一些问题,相比于 2PC 它在参与者中也引入了超时机制,并且新增了一个阶段使得参与者可以利用这一个阶段统一各自的状态。
3PC 包含了三个阶段,分别是准备阶段、预提交阶段和提交阶段。

准备阶段的变更成不会直接执行事务,而是会先去询问此时的参与者是否有条件接这个事务。
预提交阶段的引入起到了一个统一状态的作用,在预处理阶段表明所有参与者都已经回应了。

3PC 的引入是为了解决提交阶段 2PC 协调者和某参与者都挂了之后新选举的协调者不知道当前应该提交还是回滚的问题。

新协调者来的时候发现有一个参与者处于预提交或者提交阶段,那么表明已经经过了所有参与者的确认了,所以此时执行的就是提交命令。3PC 就是通过引入预提交阶段来使得参与者之间的状态得到统一,也就是留了一个阶段让大家同步一下。

TCC

2PC 和 3PC 都是数据库层面的,而 TCC 是业务层面的分布式事务。

TCC 指的是Try - Confirm - Cancel。

Try:指的是预留,即资源的预留和锁定,注意是预留。

Confirm:指的是确认操作,这一步其实就是真正的执行了。

Cancel:指的是撤销操作,可以理解为把预留阶段的动作撤销了。

TCC模型还有个事务管理者的角色,用来记录TCC全局事务状态并提交或者回滚事务。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值