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根据分支事务的状态,决定组事务的成功与否,将此状态同步到子事务,完成最后的提交或者回滚,完成分布式事务的操作
事务的代理实现原理
private void transactionalProxy ( ) {
Boolean flag = false ;
if ( false ) {
}
try {
} catch ( Exception exception) {
}
}
目录说明
seata/conf
file.conf --> seata,事务信息保存位置
file、db、redis
registry.conf --> seata,集群配置中心
file 、nacos 、eureka、redis、zk、consul、etcd3、sofa