Seata 工作原理
2024-10-18 15:47:07 0 举报
Seata 工作原理分享
作者其他创作
大纲/内容
TC
Resource
解析SQL语义
rollback_info
2.5 执行业务逻辑,业务rpc调用
DataSourceProxy
2.2 注册分支事务2.2.1 向TC发起BranchRegisterRequest请求
undo_log
3.2.3 返回分支事务branchId
2.2 向TC注册分支事务
获取前置镜像beforeImage
执行业务sql
注册分支事务
TM
order-server
RM
获取后置镜像 afterImage
4.2 提交全局事务,异步处理,正常情况最终返回GlobalStatus.Committed
2.1 生成前置后置镜像,执行业务sql
storage_tbl
生成undolog信息并缓存
2.执行业务逻辑orderDAO.insert(order)
3.2 向TC注册分支事务
2.4 本地事务提交,order_tbl表中插入订单数据
3.4 本地事务提交,order_tbl表中插入订单数据
{\t\"@class\": \"io.seata.rm.datasource.undo.BranchUndoLog\
定时线程池轮询处理AsyncCommitting任务
SELECT * FROM order_tbl WHERE (id) in ( (?) ) # 获取后置镜像
3. 执行业务逻辑storageDAO.updateById(storage)
3.1 生成前置后置镜像,执行业务sql
seata-server
更新global_table中status=8对应AsyncCommitting
提取表元数据
4.1 向TC发起GlobalCommitRequest请求
4.提交全局事务
1. 遍历分支事务信息,删除分支事务信息,删除branch_table记录2. 发起rpc调用,通知对应的RM删除undo_log记录3. 删除全局事务信息,删除global_table记录
3.2 注册分支事务3.2.1 向TC发起BranchRegisterRequest请求
2.2.3 返回分支事务branchId
storage_db
1.开启全局事务1.1向TC发起GlobalBeginRequest请求
2.3 保存undolog信息到undo_log表
order_db
4.3 返回globalStatus
storage-server
order_tbl
3.3 保存undolog信息到undo_log表
0 条评论
下一页