目录
什么是Seata?
Seata是阿里的一款开源的分布式事务解决方案,致力于微服务架构下提高性能和简单易用的分布式事务服务。
什么是分布式事务
一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,此时就会产生分布式事务问题
Seata的组成
一个ID+三个组件
- Transaction ID(XID):全局唯一的事务id
- Transaction Coordinator(TC):事务协调器。维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚
- Transaction Manager(TM):控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议。
- Resource Manager(RM):控制分支事务,负责分支注册、状态汇报、并接受事务协调的指令,驱动分支(本地)事务的提交和回滚
Seata的工作流程
1.TM向TC申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID
2.XID在微服务调用链路的上下文中传播
3.RM向TC注册分支事务,将其纳入XID对应全局事务的管辖
4.TM向TC发起针对XID的全局提交或回滚决议
5.TC调度XID下管辖的全部分支事务完成提交或回滚请求
举例:好比是班主任带着学生们听教授讲公开课。TC是教授、TM是班主任,RM是同学们
Seata的安装
下载地址:https://github.com/seata/seata/releases/tag/v0.9.0
修改conf目录下的file.conf文件
1.先备份原始的file.conf
2.在此文件中我们修改三处:自定义事务组名称+事务日志存储模式为db+数据库连接
3.service模块
4.store模块
在mysql5.7中新建seata数据库(类似于Nacos的持久化配置)
在conf目录下找到db_store.sql文件,在seata数据库下执行sql文件。
修改conf目录下的registry.conf配置文件
先启动Nacos端口号8848
再启动bin目录下的seata-server.bat
当看见registry.nacos时代表启动成功~