- 安装步骤:
- 数据库的准备
- 配置文件的修改
- 开始使用
- 1:启动nacos 与seata 服务
- 2:微服务的建立
- 步骤
- 3:测试
- 补充:(持续更新)
- 整体的流程:
- 回滚原理
到官网自行下载:
官网
部署教程
就简单的说 你需要 在数据库 建个seata 库 里面存放的是到时候需要回滚的一些数据
sql脚本
还需要在你需要回滚的数据库创建一个 undo 表 进行回滚操作:
undo sql
你需要修改的配置文件:
分别修改 注册和存储的:
很简单的 列如 file.conf 的修改:
第一行表示要用什么来存储
然后选择db 代表数据库 再把db 对应的那些修改成自己的数据即可:
register.conf 一样:
注意里面有两处type 都需要修改:
以上便是使用前的准备
由于使用到了 nacos 进行注册 所以需要使用nacos进行搭配
启动很简单 打开bin目录的bat文件即可:
注意先启动好nacos
此次用到的测试 有三个微服务三个数据库:
订单 用户 库存
就很简单 下订单 生成订单 扣用户金额 减少库存
1: 改pom:
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.alibaba.cloud spring-cloud-starter-alibaba-seata seata-all io.seata io.seata seata-all 1.4.1 org.springframework.cloud spring-cloud-starter-openfeign org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.0 mysql mysql-connector-java 5.1.37 com.alibaba druid-spring-boot-starter 1.1.10 org.projectlombok lombok true
2:改yaml: 基本上没什么好改的
server:
port: 2002
spring:
application:
name: seata-storage-service
cloud:
alibaba:
# seata:
# tx-service-group: fsp_tx_group 分组的设置
nacos:
discovery:
server-addr: localhost:8848
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/seata_storage
username: root
password: 1234
logging:
level:
io:
seata: info
mybatis:
mapperLocations: classpath:mapper/*.xml
configuration:
map-underscore-to-camel-case: true
3:需要在resources 下把配置文件复制进来
在你需要回滚的事务的 controller或者serviceimple 的方法上 写上这个注解就完事了:
@GlobalTransactional
一些参数的解释:
name :就是name
剩下的解释就知道
关于 tm tc rm 的解释 :大概就是这样
这是 第一阶段的操作 最主要的就是 这个before 和 after 快照
这是发生了回滚进行的操作
具体可以用列子进行解释:
如图 我在进行数据的修改之前 先走第一阶段的流程
保存一个before 快照 存储了age=22
然后 进行修改 age =28
随后 又建立了after 快照 存储了 age=28
到此 第一阶段结束
如果发生事务回滚
他首先去查 数据库 age为多少
如果age=28 那和 after快照存储的age对比 一样
那就进行设置 把before快照存储的age 值 设置进去
如果 age!=28 而after 是28 那证明出现了脏读
则会转到人工处理



