Seata Introduction
Seata是一种开源分布式交易解决方案,旨在为微服务架构中的分布式系统提供高效且可靠的交易管理。它支持各种交易模式,包括AT(自动交易),TCC(Try-Confirm-Cancel)和SAGA,能够处理复杂的分布式交易方案。
Transaction Theory
CAP Theorem
CAP定理是分布式系统中的基本原则,表明分布式系统不可能同时提供以下所有三个保证:
- 一致性 :所有节点都会同时看到相同的数据。
- 可用性 :每个请求都会在有限的时间内收到响应。
- 分区耐受性 :尽管进行了网络分区,该系统仍继续运行。
BASE Theory
基本理论是对CAP定理的解决方案,其中包括以下三个原则:
- 基本上可用 :当系统失败时,允许丢失可用性,但是系统核心仍在运行。
- 软状态 :在有限的时间内,允许临时不一致等中间状态。
- 最终的一致性 :如果有足够的时间,该系统最终将变得一致,没有新的更新。
AP模式: 各子事物分别执行和提交,采取弥补措施,达到最终一致
CP模式: 各子事物之行后互相等待,同时提交,同时回滚,达成强一致,但事务处理过程中,系统处于弱可用状态
Seata Architecture
Seate 事务管理中三个角色
- TC (Transaction Coordinator): 事物协调者,维护全局和分支事物的状态,协调全局事物提交或回滚。
- TM (Transaction Manager): 事务管理器,负责发起全局事务和分支事务的注册,提交或回滚请求。
- RM (Resource Manager): 资源管理器,负责管理分支事务的资源,如数据库连接、消息队列等,与TC交谈以注册分支事物和报告分支事物的状态,并驱动分支事物提交和回滚。
Seata 提供了四种不同的分布式事务解决方案
- XA模式 : 强一致分阶段事物模式,牺牲了一定的可用性,无业务侵入
- TCC模式 : 最终一致的分阶段事物模式,有业务侵入
- AT模式 : 最终一致的分阶段事物模式,无业务模式,也是seata的默认模式
- SAGA模式 : 长事务模式,有业务侵入
动手实践
XA模式
XA 模式是处理DTP标准,俩个阶段
- 准备阶段:协调者向RM发起准备请求 就绪后告诉事物协调者
- 提交阶段:协调者向RM发起提交请求, RM执行提交操作
- 失败阶段:协调者向RM发起回滚请求,RM执行回滚操作
Seata 中xa模式


XA模式优点:
- 强一致性:满足ACID原则
- 常用数据库都支持,实现简单,且没有代码侵入
XA模式缺点: - 因为一阶段要锁定数据库资源,等待二阶段结束才释放,性能差
- 依赖关系型数据库实现事物
XA模式实现:

AT模式
AT模式同样是分阶段提交的,不过弥补了XA模型中资源锁定周期过长的缺陷



并发访问 安全问题
AT引入全局锁解决脏写问题
AT模式的写隔离
总结:
AT模式实现:
俩张表:
- 全局锁 放到TC服务关联的数据库
- undo_log 放到微服务相关的数据库
TCC模式
TCC模式与AT模式相似,每段都是独立事物,不同的是tcc需要人工编码实现数据恢复。需要实现三个方法:
- Try: 尝试阶段,预留资源,检查资源是否可用。
- Confirm: 完成资源操作业务,要求Try成功Confirm也必须成功。
- Cancel: 取消阶段,释放资源,try的反向操作。





SAGA模式
Sage模式是seata提供的长事务解决方案。也分为俩个阶段:
- Try: 直接提交本地事物
- Compensate: 成功则什么都不做,失败则通过编写补偿代码来回滚事物。

四种对比

高可用
异地多机房容灾方案:放在nacos上集群 修改配置