0x01:什么是分布式事务
一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题
一个典型的分布式事务(1+3)
分布式事务处理过程-ID+三组件模型
Transaction ID(XID)
全局唯一的事务id
三组件概念
Transaction Coordinator(TC)
事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚
Transaction Manager(TM)
控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议
Resource Manager(RM)
控制分支事务,负责分支注册、状态汇报,并接受事务协调的指令,驱动分支(本地)事务的提交和回滚
处理过程
0x02:配置 state
一、下载seata解压
https://github.com/seata/seata/releases
二、修改conf文件夹的 file.conf 文件
先备份原始 file.conf 文件
修改 file.conf 文件
修改service模块,可以改为自己的工程名
store模块
存到数据库
三、在数据库建库和建表(配置文件有)
mysql5.7 数据库新建库 seata
建表 db_store.sql 在 seata-server-0.9.0\seata\conf 目录里面 db_store.sql
四、修改 seata-server-0.9.0\seata\conf 目录下的 registry.conf 目录下的 registry.conf 配置文件
五、启动nacos seata-server
0x03:实例准备 订单 库存 账户
一、数据库准备
库
create database seata_order;
create database seata_storage;
create database seata_account;
表
建立滚日志表
订单-库存-账户3个库下都需要建各自独立的回滚日志表
seata-server-0.9.0\seata\conf\目录下的db_undo_log.sql
二、微服务准备
新建订单模块举例
pom
yml文件
yml文件的 tx-service-group需要和配置文件的对应
在 resource 目录下新建 file.conf registry.conf
拷贝seata-server/conf目录下的file.conf
拷贝seata-server/conf目录下的registry.conf
写实体类 写 dao 接口 实现类 xml等
配置文件(注意)
启动类 (注意)
0x04:@GlobalTransactional注解详解
直接在业务逻辑的方法上加上这个注解就行了
就可以达到分布式微服务的事务管理
0x05:state 原理详解
分布式事务执行流程
seata的几个模式
AT模式对业务无侵入(几个阶段)
一阶段加载
二阶段提交
三阶段回滚
热门跟贴