acos整合分布式事务框架seata

2023-10-07 22:10

本文主要是介绍acos整合分布式事务框架seata,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

内容摘要

1.nacos:1.1.4版本

2.seata:1.42版本

3.springcloud:H.R1版本

4.seata使用nacos作为配置中心和注册中心

5.示例使用的AT模式

seata官网地址:Seata

最近看了b站尚硅谷的微服务视频,里面用的seata是0.8的老版本,整合方式和现在新版本还是的有点区别,分享下1.42版本的整合方式。示例代码放这:示例代码.zip

1.去官网下载Seata

 

解压后目录如下

 

2.seata配置步骤

2.1打开conf目录下面的file.conf文件,修改存储方式为数据库存储,因为后面用了nacos作为配置中心,这儿其实可以忽略不配置

(注意mysql8.0版本需要高版本驱动,seata默认是低版本,这里直接修改驱动类即可)

 

2.2打开registry.conf

首先修改registry部分,表示将seata服务注册到nacos中去

 

2.3然后修改config部分,表示使用nacos作为配置中心,配置参数全部从nacos中读取

 

2.4打开conf文件中的README-zh.md文件,分别打开client、server、config-center连接,从github中拷贝图中标出的脚本和文件

 

config-center拷贝这俩文件,一个是往nacos写入配置的.sh脚本,另一个是配置项模板文件

 

 

这里注意下config.txt中这个事务组名的配置,可以配置多个,这里就配一个默认的my_test_tx_group作为事务组名

 

接下来是数据库存储配置,配置项和之前file.conf中的改动基本一样

 

2.5将config-serter中的数据导入到nacos中,这儿请参考网上的教程,需要下一个git来运行.sh命令脚本,将模板中的配置项全部导入nacos,成功后如图

 

3.数据库建表

建一个seata的服务端数据库,执行下之前拷贝的建表sql(seata中配置的数据库就连这个)

其他三个库为测试用业务库,每一个库都需要建一个undo_log表

 

3.springboot子模块集成seata

3.1pom.xml的依赖中,seata除了需要springboot、springcloud-alibaba的依赖外,需要如下4个包,其余的如mybatis、jdbc、feign相关依赖这就不说明了

 

3.2 yml中的配置如图

 

 

3.4在事务启动的客户端的server层实现类上,加一个注解@GlobalTransactional,很像springboot中的@Transactional,这里表示是开启全局事务配置

 

4.运行demo程序测试事务

三个测试程序,order订单服务、storage库存服务、accout用户账户服务

正常流程为:创建订单->调用库存服务扣减库存->调用账户服务扣减账户余额→修改订单状态

但如果最后扣除账户余额时服务器报异常!所有操作过的订单、库存和账户数据就会事务回滚,如此来测试下

 

 

先启动三个服务,先看下三个数据库表中的状态:订单为空、账户1000、库存100

 

在调用账户扣除服务之前这给他打个断点,观察下中途数据有没有更改

 

访问测试接口,进入server方法中的断点,这时候看下控制台,事务发起客户端已经打印了Begin new global transaction [192.168.0.107:8091:7088859707401691154],说明全局事务开启了

 

再看看数据库,这时候前面的订单、库存操作已经执行了

 

接下来放开断点,调用账户服务扣款并抛运行时异常,看看客户端控制台,已经打印事务回滚了

 

再看看数据库,数据已经回滚成功,到这就说明AT模式分布式事务配置成功了

 

这篇关于acos整合分布式事务框架seata的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/160736

相关文章

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

MybatisPlus3.3.1整合clickhouse的过程

《MybatisPlus3.3.1整合clickhouse的过程》:本文主要介绍MybatisPlus3.3.1整合clickhouse的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定... 前言ClickHouse是俄罗斯Yandex发布的一款数据分析型数据库支持sql语法,详情可以访问官网,

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

基于MongoDB实现文件的分布式存储

《基于MongoDB实现文件的分布式存储》分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考... 目录一、引言二、GridFS 原理剖析三、Spring Boot 集成 GridFS3.1 添加依赖

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2