Seata 是什么?
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。
优点
对业务无侵入
Seata术语
- TC (Transaction Coordinator) - 事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚。
- TM (Transaction Manager) - 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务
- RM (Resource Manager) - 资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
实现流程
手写Java 类,实现Connection 接口,通过对Connection 接口的切面,手动替换为自己的手写实现类。
1:创建事务组,生成事务组ID(groupId)(xid)
2:创建分支事务(分支事务id,分支事务type:commit/rollback,所属组别)
分支事务的type依赖于切面执行成功与否,成功则为commit
3:注册分支事务
4:提交全局事务
tm根据分支事务的状态,决定组事务的成功与否,将此状态同步到子事务,完成最后的提交或者回滚,完成分布式事务的操作