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 整合 Grizzly的过程

《SpringBoot整合Grizzly的过程》Grizzly是一个高性能的、异步的、非阻塞的HTTP服务器框架,它可以与SpringBoot一起提供比传统的Tomcat或Jet... 目录为什么选择 Grizzly?Spring Boot + Grizzly 整合的优势添加依赖自定义 Grizzly 作为

springboot整合gateway的详细过程

《springboot整合gateway的详细过程》本文介绍了如何配置和使用SpringCloudGateway构建一个API网关,通过实例代码介绍了springboot整合gateway的过程,需要... 目录1. 添加依赖2. 配置网关路由3. 启用Eureka客户端(可选)4. 创建主应用类5. 自定

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Redis分布式锁使用及说明

《Redis分布式锁使用及说明》本文总结了Redis和Zookeeper在高可用性和高一致性场景下的应用,并详细介绍了Redis的分布式锁实现方式,包括使用Lua脚本和续期机制,最后,提到了RedLo... 目录Redis分布式锁加锁方式怎么会解错锁?举个小案例吧解锁方式续期总结Redis分布式锁如果追求

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

Spring Boot 中整合 MyBatis-Plus详细步骤(最新推荐)

《SpringBoot中整合MyBatis-Plus详细步骤(最新推荐)》本文详细介绍了如何在SpringBoot项目中整合MyBatis-Plus,包括整合步骤、基本CRUD操作、分页查询、批... 目录一、整合步骤1. 创建 Spring Boot 项目2. 配置项目依赖3. 配置数据源4. 创建实体类

SpringBoot嵌套事务详解及失效解决方案

《SpringBoot嵌套事务详解及失效解决方案》在复杂的业务场景中,嵌套事务可以帮助我们更加精细地控制数据的一致性,然而,在SpringBoot中,如果嵌套事务的配置不当,可能会导致事务不生效的问题... 目录什么是嵌套事务?嵌套事务失效的原因核心问题:嵌套事务的解决方案方案一:将嵌套事务方法提取到独立类