分布式事务解决方案【面试简答】

本文深入探讨了分布式事务的四大特性,包括原子性、一致性、隔离性和持久性。接着介绍了CAP原理,包括一致性、可用性和分区容错性。进一步讨论了BASE理论,以及在分布式事务中如何权衡强一致性和可用性。同时,对比了XA、AT和TCC模式的优缺点,以及Saga模式在长事务解决方案中的应用。最后,分析了各种模式在性能和一致性上的取舍。

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

分布式事务

事务四大特性:

原子性:事务中所有的操作要么全部成功,要么全部失败
一致性:要保证数据库内部完整性约束,声明性约束
隔离性:数据之间的操作相互隔离
持久性:对数据的修改是永久性的

CAP

一致性:用户访问分布式系统中的任意节点,得到的数据必须是一致的

可用性:用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝

分区容错性:因为网络故障或其他原因导致分布式系统中的部分节点与其他节点失去连接,形成独立分区

  • 分区:因为网络故障或其他原因导致分布式系统中的部分节点与其他节点失去连接,形成独立分区。
  • 容错:在集群出现分区时,整个系统也要保持对外提供服务

BASE理论

BASE理论是对CAP的一种解决思路,包含三个思想:

  • Basically Available (基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
  • Soft State (软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。
  • Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。

​ CP:强一致性,牺牲可用性

​ AP:高可用性,软状态【可以临时允许出现数据的不一致,最终保证数据的最终一致性】

可使用seata实现分布式事务处理

seata地址http://seata.io/zh-cn/docs/overview/what-is-seata.html

TC:事务协调者

TM:事务管理器

RM:资源管理器

XA模式
	XA模式的优点是:
	-- 事务的强一致性,满足ACID原则
	-- 常用数据库都支持,实现简单,并且没有代码侵入
	XA模式的缺点是:
	-- 因为一阶段需要锁定数据库资源,等待二阶段结束才释放,性能较差
	-- 依赖关系型数据库实现事务
AT模式
	AT模式的优点:
	-- 一阶段完成直接提交事务,释放数据库资源,性能比较好
	-- 利用全局锁实现读写隔离
	-- 没有代码侵入,框架自动完成回滚和提交
	AT模式的缺点:
	-- 两阶段之间属于软状态,属于最终一致
	-- 框架的快照功能会影响性能,但比XA模式要好很多
AT模式与XA模式的区别
	AT模式与XA模式最大的区别
	-- XA模式一阶段不提交事务,锁定资源;AT模式一阶段直接提交,不锁定资源
	-- XA模式依赖数据库机制实现回滚;AT模式利用数据快照实现数据回滚
	-- XA模式强一致;AT模式最终一致
TCC模式
	TCC模式的每个阶段是做什么:
	- Try:资源检查和预留
	- Confirm:业务执行和提交
	- Cancel:预留资源的释放
	TCC的优点:
	- 一阶段完成直接提交事务,释放数据库资源,性能好
	- 相比AT模型,无需生成快照,无需使用全局锁,性能最强
	- 不依赖数据库事务,而是依赖补偿操作,可以用于非事务型数据库
	TCC的缺点:
	- 有代码侵入,需要人为编写Try、Confirm、Cancel接口,太麻烦
	- 软状态,事务是最终一致
	- 需要考虑Confirm、Cancel、空回滚、业务悬挂、以及幂等性处理
Saga模式:
	Saga模式是SEATA提供的长事务解决方案,也分为两个阶段:
	- 一阶段: 直接提交本地事务
	- 二阶段:成功则什么都不做;失败则通过编写补偿业务来回滚
	Saga模式优点:
	- 事务参与者可以基于时间驱动实现异步调用,吞吐量高
	- 一阶段直接提交事务,无锁,性能好
	- 不用编写TCC中的三个阶段,实现简单
	Saga模式缺点:
	- 软状态持续时间不确定,时效性差
	- 没有锁,没有事务隔离,会有脏写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值