开发者说 | 分布式事务中间件 Seata 的设计原理( 五 )
Seata 在数据源做了一层代理层,所以我们使用 Seata 时,我们使用的数据源实际上用的是 Seata 自带的数据源代理 DataSourceProxy,Seata 在这层代理中加入了很多逻辑,主要是解析 SQL,把业务数据在更新前后的数据镜像组织成回滚日志,并将 undo log 日志插入 undo_log 表中,保证每条更新数据的业务 sql 都有对应的回滚日志存在。
这样做的好处就是,本地事务执行完可以立即释放本地事务锁定的资源,然后向 TC 上报分支状态。当 TM 决议全局提交时,就不需要同步协调处理了,TC 会异步调度各个 RM 分支事务删除对应的 undo log 日志即可,这个步骤非常快速地可以完成;当 TM 决议全局回滚时,RM 收到 TC 发送的回滚请求,RM 通过 XID 找到对应的 undo log 回滚日志,然后执行回滚日志完成回滚操作。
如上图所示,XA 方案的 RM 是放在数据库层的,它依赖了数据库的 XA 驱动程序。
推荐阅读
- 电子竞技|【欣然轻资讯G】《地平线2西部禁域》新老怪兽即将登场 开发者日志
- g2|【异界事务所】萌新游戏入门攻略-进入游戏后萌新最常遇见的问题
- 异界事务所|佣兵战纪女性颜值TOP3 女王英姿引人钦慕
- Xbox|曝微软正制作“少林”游戏 由《热血无赖》开发者与Xbox合作开发
- 牛人|单干牛人! 星露谷开发者还有另外一款新作
- mod|开发者为《塞尔达传说:时之笛》推出第一人称VR Mod
- edg战队|异界事务所国服公测定档26日,今日开启预约下载,数十万人预约中
- 星露谷物语|星露谷物语开发者新作《恐怖巧克力工厂》公布
- steam|Steam的退款机制合理吗?玩家滥用规则退款让开发者很受伤
- 手机游戏|二次元手游《异界事务所》将在8月24日开启先锋测试,立绘很好看