Seata的基础概念
Seata中的几个基本概念:
- TC(Transaction Coordinator) – 事务协调者 【Seata server】
维护全局和分支事务的状态,驱动全局事务提交或回滚(TM之间的协调者)。
- TM(Transaction Manager) – 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务。
- RM(Resource Manager) – 资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

第一阶段-事务信息收集
此阶段是信息收集,加入的undo_log的阶段
在本地事务提交前,各分支事务需向 全局事务协调者
TC 注册分支 ( Branch Id
) ,为要修改的记录申请 全局锁 ,要为这条数据加锁,利用 SELECT FOR UPDATE
语句。而如果一直拿不到锁那就需要回滚本地事务。TM 开启事务后会生成全局唯一的 XID
,会在各个调用的服务间进行传递。
第二阶段-事务决议
第二阶段:此阶段是根据各分支的决议做提交或回滚:
决议是全局提交,此时各分支事务已提交并成功,这时 全局事务协调者(TC)
会向分支发送第二阶段的请求。收到 TC 的分支提交请求,该请求会被放入一个异步任务队列中,并马上返回提交成功结果给 TC。异步队列中会异步和批量地根据 Branch ID
查找并删除相应 UNDO LOG
回滚记录。
分支提交模型:
如果决议是全局回滚,过程比全局提交麻烦一点,RM
服务方收到 TC
全局协调者发来的回滚请求,通过 XID
和 Branch ID
找到相应的回滚日志记录,通过回滚记录生成反向的更新 SQL 并执行,以完成分支的回滚。
分支回滚模型:
Comments NOTHING