在开始介绍Seata的时候 先说其产生的为何
在下面的验证中 我们用一个例子项目 来验证 先弄清楚这个项目结构
参考:尚硅谷同官网项目
架构图
我自己大致表示的
模拟一个现实中的使用:
假设在order创建订单服务有个业务报错
此处业务问题后 就会导致 库存少了 订单未创建 余额还减少了
可能我们会想到加上注解实现回滚
@Transactional
这些都是开始调用前的状态
调用后
可以发现即使 我们加上了@Transactional注解回滚的也是本服务中 因为之前的都为单体项目即一个服务中的 所以可以整体回滚 但现在我们所处的阶段为微服务分布式阶段啊 多个服务 即多个项目 所以咱们就要想能不能一个总体来让所有微服务项目整体实现回滚 所以就需要一个老大来管理
Seata官网:https://seata.apache.org/zh-cn/docs/user/quickstart/
我理解的仨玩意
TC:老大 服务端
TM:总体管理
RM:各个服务
那我们来使用一下Seata
先安装它 然后进入bin目录
命令行启动 seata-server.bat
在项目中使用 加入依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
还得让各个服务被TC识别到
seata中config配置文件
默认为file单机模式 就需要配置在各个微服务项目中加入file.conf文件
service {
vgroupMapping.default_tx_group = "default" 事务分组
default.grouplist = "127.0.0.1:8091" TC服务地址 当type类型为file时才能生效
enableDegrade = false 降级
disableGlobalTransaction = false 使用全局事务
}
这样启动后Seata就会识别到 这个时候加入一个全局事务 实现全体回滚
注意加在TM上 即business服务上

这个时候再启动项目服务 数据恢复到之前源数据 再次验证
上述Seata发挥作用 事务整体回滚
那来简单简单阐述一下原理

打上断点后
seata中可以监控到

同样存储在undo_log文件中也拿到镜像前文件 即修改前的文件

这样综上所述 实现整体回滚
至于还有各种事务模式 我们采用的是AT模式 即自动模式 关于其机制一二阶段也上述介绍
五大组件的总结学习杀青 当然这只是简单快速学习一下 至于深入 接下来以尝试微服务项目中深入学习















浙公网安备 33010602011771号