Seata Notes

Seata Introduction

Seata是一种开源分布式交易解决方案,旨在为微服务架构中的分布式系统提供高效且可靠的交易管理。它支持各种交易模式,包括AT(自动交易),TCC(Try-Confirm-Cancel)和SAGA,能够处理复杂的分布式交易方案。

Transaction Theory

CAP Theorem

CAP定理是分布式系统中的基本原则,表明分布式系统不可能同时提供以下所有三个保证:

  1. 一致性 :所有节点都会同时看到相同的数据。
  2. 可用性 :每个请求都会在有限的时间内收到响应。
  3. 分区耐受性 :尽管进行了网络分区,该系统仍继续运行。

BASE Theory

基本理论是对CAP定理的解决方案,其中包括以下三个原则:

  1. 基本上可用 :当系统失败时,允许丢失可用性,但是系统核心仍在运行。
  2. 软状态 :在有限的时间内,允许临时不一致等中间状态。
  3. 最终的一致性 :如果有足够的时间,该系统最终将变得一致,没有新的更新。

AP模式: 各子事物分别执行和提交,采取弥补措施,达到最终一致
CP模式: 各子事物之行后互相等待,同时提交,同时回滚,达成强一致,但事务处理过程中,系统处于弱可用状态

Seata Architecture

Seate 事务管理中三个角色

  1. TC (Transaction Coordinator): 事物协调者,维护全局和分支事物的状态,协调全局事物提交或回滚。
  2. TM (Transaction Manager): 事务管理器,负责发起全局事务和分支事务的注册,提交或回滚请求。
  3. RM (Resource Manager): 资源管理器,负责管理分支事务的资源,如数据库连接、消息队列等,与TC交谈以注册分支事物和报告分支事物的状态,并驱动分支事物提交和回滚。

Seata 提供了四种不同的分布式事务解决方案

  • XA模式 : 强一致分阶段事物模式,牺牲了一定的可用性,无业务侵入
  • TCC模式 : 最终一致的分阶段事物模式,有业务侵入
  • AT模式 : 最终一致的分阶段事物模式,无业务模式,也是seata的默认模式
  • SAGA模式 : 长事务模式,有业务侵入

动手实践

XA模式

XA 模式是处理DTP标准,俩个阶段

  • 准备阶段:协调者向RM发起准备请求 就绪后告诉事物协调者
  • 提交阶段:协调者向RM发起提交请求, RM执行提交操作
  • 失败阶段:协调者向RM发起回滚请求,RM执行回滚操作

Seata 中xa模式

xa

xa_

XA模式优点:

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

XA Mode Impl

AT模式

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

AT

AT_

AT__

并发访问 安全问题alt text

AT引入全局锁解决脏写问题alt text

AT模式的写隔离alt text

总结:alt text

AT模式实现:ALT TEXT

俩张表:
- 全局锁 放到TC服务关联的数据库
- undo_log 放到微服务相关的数据库

TCC模式

TCC模式与AT模式相似,每段都是独立事物,不同的是tcc需要人工编码实现数据恢复。需要实现三个方法:

  1. Try: 尝试阶段,预留资源,检查资源是否可用。
  2. Confirm: 完成资源操作业务,要求Try成功Confirm也必须成功。
  3. Cancel: 取消阶段,释放资源,try的反向操作。

alt text

alt text

alt text

alt text

alt text

SAGA模式

Sage模式是seata提供的长事务解决方案。也分为俩个阶段:

  1. Try: 直接提交本地事物
  2. Compensate: 成功则什么都不做,失败则通过编写补偿代码来回滚事物。

alt text

四种对比

alt text

高可用

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