seata简介
-
分布式微服务中是多个微服务调用多个数据库,每个服务内部的数据一致性由本地事务来保证, 但是全局的数据一致性问题没法保证;一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题
-
Seata是一款开源的分布式事务解决方案
-
分布式事务处理过程的一ID+三组件模型:
Transaction ID XID 全局唯一的事务ID
三组件概念:
TC (Transaction Coordinator) 事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚
TM (Transaction Manager) 事务管理器:定义全局事务的范围:开始全局事务、提交或回滚全局事务
RM (Resource Manager) 资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚
- seata底层原理
执行sql业务,数据更新前保存before image,更新后保存after image,最后生成行锁
若没有出现异常,则将保存的快照和行锁删除
若需要回滚,则检验脏写,还原数据,删除快照和行锁