Seata分布式事务

注意:先使用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、官网下载

Seata Java Download | Apache Seatahttps://seata.apache.org/zh-cn/download/seata-server

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便大功告成

再次测试接口我们发现异常出现之后,多个数据库会整体回滚已经实现了分布式事务

原理方面持续更新.......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值