当前位置: 首页 > news >正文

SpringCloud整合分布式事务Seata

版本说明 spring-cloud-alibaba 2022.0.0.0-RC1,jdk17,seata 1.6.1

接入步骤

在dependencyManagement添加spring-cloud-alibaba的依赖管理

 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring.cloud.alibaba.version}</version><scope>import</scope><type>pom</type>
</dependency>

引入seata依赖和我们的适配器依赖

内置依赖的seata的包,只需要引入一个即可,seata版本不对的话需要另外引入,这里我自己项目做的配置,一般用mysql使用第二个依赖。

<dependencies><dependency><groupId>com.bda.common</groupId><artifactId>datacenter-commons-seata-adapter</artifactId><version>1.1.230713.0-SNAPSHOT</version></dependency>
</dependencies>

无需适配的依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>

初始化表结构

达梦的表结构如下

CREATE TABLE "UNDO_LOG"
("ID" BIGINT IDENTITY(1, 1) NOT NULL,"BRANCH_ID" BIGINT NOT NULL,"XID" VARCHAR2(100) NOT NULL,"CONTEXT_VAL" VARCHAR2(500) NOT NULL,"ROLLBACK_INFO" BLOB NOT NULL,"LOG_STATUS" INT NOT NULL,"LOG_CREATED" DATETIME(6) NOT NULL,"LOG_MODIFIED" DATETIME(6) NOT NULL,NOT CLUSTER PRIMARY KEY("ID"),CONSTRAINT "UX_UNDO_LOG" UNIQUE("XID", "BRANCH_ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;

mysql的表结构

create table if not exists undo_log
(id            bigint auto_increment primary key,branch_id     bigint       not null,xid           varchar(100) not null,context_val   varchar(500) 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) null,constraint ux_undo_logunique (xid, branch_id)
);

客户端TC配置seata信息

配置seata相关信息,根据实际配置即可

seata.enabled=true
seata.application-id=${spring.application.name}
seata.tx-service-group=default_tx_group
seata.config.type=nacos
seata.config.nacos.server-addr=${my.cloud.nacos.server-addr}
seata.config.nacos.group=SEATA_GROUP
seata.config.nacos.dataId=seataServer.properties
seata.config.nacos.username=nacos
seata.config.nacos.password=nacos
## 和seata的 nacos 2.0.3以前,public的时候不需要写,不然找不到
seata.config.nacos.namespace=
seata.client.rm.sql-parser-type=druid# get seata-server by nacos
seata.registry.type=nacos
seata.registry.nacos.application=seata-server
seata.registry.nacos.group=SEATA_GROUP
seata.registry.nacos.username=nacos
seata.registry.nacos.password=nacos
seata.registry.nacos.server-addr=${my.cloud.nacos.server-addr}

使用说明

at模式只需要添加一个注释即可@GlobalTransactional

    //添加注解@GlobalTransactional@Transactional(rollbackFor = Exception.class)public void placeOrder(String userId, String commodityCode, Integer count) {BigDecimal orderMoney = new BigDecimal(count).multiply(new BigDecimal(5));Order order = new Order().setUserId(userId).setCommodityCode(commodityCode).setCount(count).setMoney(orderMoney);orderDAO.insert(order);stockFeignClient.deduct(commodityCode, count);}

术语

  • TC (Transaction Coordinator) - 事务协调者
    维护全局和分支事务的状态,驱动全局事务提交或回滚,就是我们部署的seata服务器

  • TM (Transaction Manager) - 事务管理器
    定义全局事务的范围:开始全局事务、提交或回滚全局事务。

  • RM (Resource Manager) - 资源管理器
    管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

Seata分TC、TM和RM三个角色,TC(Server端)为单独服务端部署,TM和RM(Client端)由业务系统集成。

client
存放client端sql脚本 (包含 undo_log表) ,参数配置config-center
各个配置中心参数导入脚本,config.txt(包含server和client,原名nacos-config.txt)为通用参数文件server
server端数据库脚本 (包含 lock_table、branch_table 与 global_table) 及各个容器配置
http://www.dtcms.com/a/365658.html

相关文章:

  • C语言(长期更新)第13讲:指针详解(三)
  • 毒蛇品种检测识别数据集:12个类别,6500+图像,全yolo标注
  • 印度股票数据API对接文档
  • 硬件(一)51单片机
  • 【和春笋一起学C++】(三十九)类作用域
  • [鸿蒙心迹]带新人学鸿蒙的悲欢离合
  • “企业版维基百科”Confluence
  • Docker实战指南:从安装到架构解析
  • 【QT特性技术讲解】QPrinter、QPdf
  • leetcode 38 外观数列
  • 联想开天X7:携手海光,开启信创PC高性能新时代
  • Java中 String、StringBuilder 和 StringBuffer 的区别?
  • WHAT - 协程及 JavaScript 具体代码示例
  • PgManage:一款免费开源、跨平台的数据库管理工具
  • Packet Radio Network,PRNET
  • 从发现到恢复,看瑞数信息如何构建“抗毁重构”实战路径
  • VR节约用水模拟体验系统:沉浸式体验如何改变我们的用水习惯
  • 全员0门槛数据分析:纷享销客BI Agent,让数据价值直抵业务
  • 实现信号的小波分解和重构
  • 自动化仓库托盘搬运减少错误和损坏的方法有哪些?实操案例解读
  • 12、Docker基本概念 容器与镜像与安装
  • MyBatis xml配置文件
  • 借助Aspose.ZIP SDK,在 C# 中压缩和提取 LZIP 文件
  • ubuntu的2T新硬盘分区、格式化并挂载
  • Linux学习:生产者消费者模型
  • 明远智睿 3568 核心板:四核 Cortex - A55 架构驱动的性能新标杆
  • C++中cdecl、stdcall、fastcall、thiscall异同——10分钟弄清
  • linux0.12 head.s代码解析
  • Alpha World赞助Hello Blockchain Thailand,AWT成为全球共识焦点
  • 袋鼠云产品功能更新报告14期|实时开发,效率再升级!