注意:先使用openfeign实现各个微服务模块之间的远程调用
在 Seata 的 AT 模式下,undo_log
表用于存储事务的回滚日志。如果这个表不存在,Seata 无法正常工作提前建好undo_log表哦
/*
Navicat Premium Data Transfer
Source Server : 城管不管
Source Server Type : MySQL
Source Server Version : 80036 (8.0.36)
Source Host : localhost:3306
Source Schema : account_db
Target Server Type : MySQL
Target Server Version : 80036 (8.0.36)
File Encoding : 65001
Date: 17/07/2025 09:46:00
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for undo_log
-- ----------------------------
DROP TABLE IF EXISTS `undo_log`;
CREATE TABLE `undo_log` (
`id` bigint NOT NULL AUTO_INCREMENT,
`branch_id` bigint NOT NULL,
`xid` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`context` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`rollback_info` longblob NOT NULL,
`log_status` int NOT NULL,
`log_created` datetime NOT NULL,
`log_modified` datetime NOT NULL,
`ext` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `ux_undo_log`(`xid` ASC, `branch_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
一、下载seata服务器并启动
1、官网下载
2、启动
进入到解压之后的bin目录下cmd运行
seata-server.bat
seata服务器监听8091:127.0.0.1:8091
web页面:http://127.0.0.1:7091/
注意:web页面的账号密码就是seata,同sentinel。右上角还可以调中文
我这里试用的是2.1.0
二、引入依赖
<!-- seata-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
三、配置文件
重点就是指定服务器列表 ==》8091哦
如下即可:
service {
#transaction service group mapping
vgroupMapping.default_tx_group = "default"
#only support when registry.type=file, please don't set multiple addresses
default.grouplist = "127.0.0.1:8091"
#degrade, current not support
enableDegrade = false
#disable seata
disableGlobalTransaction = false
}
注意:每个微服务模块中都应该引入这个file.conf配置文件
四、开启全局事务管理
如图,从Business开始,因此我们只需在Business中加上@GlobalTransactional便大功告成
再次测试接口我们发现异常出现之后,多个数据库会整体回滚已经实现了分布式事务
原理方面持续更新.......