问题
一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题。
Seata术语
Transaction ID XID全局唯一的事务D
TC:事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚
TM:事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务。
RM:资源管理器
管理分支事务处理的资源,与IC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚
过程:
1.TM向TC申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID;
2.X1D在微服务调用链路的上下文中传播;
3.RM向TC注册分支事务,将其纳入ⅪD对应全局事务的管辖;
4.TM向TC发起针对ⅪD的全局提交或回滚决议;
5.TC调度ⅪID下管辖的全部分支事务完成提交或回滚请求。
使用:
安装配置:
1.下载后修改file.conf文件
自定义事务组名称+事务日志存储模式为qb+数据库连接信息
Service
Store
建库建表
修改registry.conf配置文件
指明注册中心
业务库里分别创建回滚日志表
order项目搭建:
新建mould:
seata- order- service2001
pom
yml
添加file.conf
新增registry.conf
实体类:
Dao
Service
Controller
MybatisConfig
DataSourceProxyConfig
主启动类
注意:
Storage项目搭建
Mould:
seata-storage-service 2002
pom
Yml
File.conf
Registry.conf
实体类:
Dao
service
两个config
同上
启动类:
Seata原理
一阶段加载
二阶段提交
二阶段回滚
Netty