image.png

  • TM - 事务管理器:全局事务管理 定义全局事务的范围/开始全局事务/提交回滚全局事务
  • RM - 资源管理器:管理分支事务,与TC交谈以注册分支事务/报告分支事务的状态/执行分支事务提交或回滚
  • TC - 事务协调者:维护全局和分支事务的状态 协调执行全局事务提交或回滚
* tm---->tc开启全局事务   各分支事务在tc注册分支事务
* 分支事务执行提交并向tc报告事务状态 后保存修改前数据备份到undokog表 
* 各分支事务完成后tm通知tc准备提交全局事务  tc确认各分支事务事务状态
* 若有一个分支事务事务状态异常  则统一告知各分支事务回滚 
     *执行成功的事务通过undolog恢复数据至修改前并删除备份数据
     *执行失败事务无操作
*各分支事务执行状态无异常则提交全局事务并删除undolog备份数据   

=============================================

Seata的AT(Automatic Transaction)模式是一种基于代理的分布式事务解决方案,它通过拦截和管理事务操作来实现数据一致性。以下是Seata AT模式的执行流程和关键要点:

一、执行流程
事务开始:
应用程序通过注解(如@GlobalTransactional)或编程式API标记需要参与全局事务的方法。
Seata客户端(通常是Spring Cloud应用)向Seata Server发送请求,开始一个新的全局事务。
Seata Server收到请求后,生成一个全局事务ID(XID),并记录到全局事务表(global_table)中。
分支注册:
客户端应用在执行本地事务的过程中,每遇到一次数据库操作,都会生成一个分支事务ID(Branch ID)。
客户端将分支事务注册到Seata Server,Seata Server将分支事务的信息记录到分支事务表(branch_table)中。
执行本地操作:
客户端继续执行本地事务中的业务逻辑。
Seata会在每个SQL语句执行前后记录下Undo Log(回滚日志),以便在事务回滚时能够还原数据。Undo Log包括Before Image和After Image,分别记录了数据修改前后的状态。
事务提交或回滚:
业务逻辑执行完毕后,客户端决定提交或回滚全局事务。
如果决定提交全局事务,Seata Server会向所有注册的分支事务发送提交命令。客户端将提交本地事务,并清理Undo Log。
如果决定回滚全局事务,Seata Server会向所有注册的分支事务发送回滚命令。客户端将使用Undo Log来回滚本地事务。
事务结束:
Seata Server根据分支事务的结果更新全局事务的状态,并最终清理相关记录。


cahrlotte
1 声望1 粉丝