seata服务1.3.0版本搭建(你说你讨厌母亲的市侩圆滑,却不知她也曾松花酿酒,春水煎茶;你说你讨厌父亲的世故虚伪,却不知他也曾满目星辰,桀骜潇洒。)

本文主要是介绍seata服务1.3.0版本搭建(你说你讨厌母亲的市侩圆滑,却不知她也曾松花酿酒,春水煎茶;你说你讨厌父亲的世故虚伪,却不知他也曾满目星辰,桀骜潇洒。),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.准备工作

1.1 数据库相关

 1.2 seata配置相关

2. 微服务项目连接seata


1.准备工作

1.1 数据库相关

(1)首先需要创建如下图所示的数据库用来模拟分布式的架构:

 数据库名最好跟图示的一致,能避免一些多余的修改操作

(2)下载所需项目的代码

链接:https://pan.baidu.com/s/1OFh1p0BJxfnzKYQgWtx4cA 
提取码:xpnk

 解压seata_parent.zip

 并使用idea打开项目(最好删除 .idea文件夹,因为maven路径不同)

项目架构如下:

 (3)将项目中的sql文件分别导入到之前创建好的数据库中

 如果是mysql的8.0版本,就删除 sql文件中的所有 COLLATE = utf8mb4_0900_ai_ci 字段即可成功运行。

表结构和数据如图所示:

 1.2 seata配置相关

(1)分别解压之前下载好的seata压缩包

 (2)将seata-1.3.0中的script目录复制到seata-server-1.3.0/seata/中

 

 (3)修改 file.conf 文件

 

 (4)seata数据库中导入 mysql.sql文件

步骤:打开seata-server-1.3.0中 \seata\script\server\db 目录,直接在seata中运行sql文件即可。

 (5)将你对应的mysql版本的jar包移入上一级目录lib中,我这里是5版本的

 (6)修改配置中心和注册中心

打开registry.conf文件

 修改内容如下:

registry {# file 、nacos 、eureka、redis、zk、consul、etcd3、sofatype = "nacos"nacos {application = "seata-server"serverAddr = "127.0.0.1:8848"group = "SEATA_GROUP"namespace = ""cluster = "default"username = "nacos"password = "nacos"}}config {# file、nacos 、apollo、zk、consul、etcd3type = "nacos"nacos {serverAddr = "127.0.0.1:8848"namespace = ""group = "SEATA_GROUP"username = "nacos"password = "nacos"}}

这里使用的是nacos,所以其他的注册和配置中心都可以直接删除,看起来更清爽一些。

(7)修改配置,选择注册到nacos的一些配置信息

编辑config.txt文件

 内容如下:

 这里设置了默认为zhengzhou,方便seata管理时使用

 (8)把上面修改好的配置放入配置中心

一定要先启动本地的nacos,不然无法注册

 找到nacos目录

打开cmd窗口使用命令:

.\nacos-config.sh

 或者直接双击,这里使用的是git的是控制面板,建议先下载一个git

 运行完毕后,查看nacos控制台

 发现已经注册成功

(9)bin目录双击启动seata

 或者使用cmd控制台命令

.\seata-server.bat

启动成功

 查看nacos服务列表

 说明已配置成功。

2. 微服务项目连接seata

(1)每个微服务数据库中分别创建undo_log表

CREATE TABLE IF NOT EXISTS `undo_log`
(`branch_id`     BIGINT(20)   NOT NULL COMMENT 'branch transaction id',`xid`           VARCHAR(100) NOT NULL COMMENT 'global transaction id',`context`       VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization',`rollback_info` LONGBLOB     NOT NULL COMMENT 'rollback info',`log_status`    INT(11)      NOT NULL COMMENT '0:normal status,1:defense status',`log_created`   DATETIME(6)  NOT NULL COMMENT 'create datetime',`log_modified`  DATETIME(6)  NOT NULL COMMENT 'modify datetime',UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
) ENGINE = InnoDBAUTO_INCREMENT = 1DEFAULT CHARSET = utf8 COMMENT ='AT transaction mode undo table';

 这个表用来记录数据回退的日志,不论成功还是失败,最终都会删除数据,清空表

 (2)微服务项目父工程引入依赖

    <dependencies><!--seata 一定要保证和seata服务的版本匹配--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId></dependency></dependencies>

(3)每个微服务的yml配置文件打开注释的内容

 (4)在package com.ykq.service.impl包下OrderServiceImpl类中修改事务注解为@GlobalTransactional

 (4)启动所有的微服务

发现每个微服务都已经连接seata成功

 (5)开始测试

浏览器访问:http://localhost:8001/order/addOrder?userId=1&productId=1&count=10&money=200

如果想看到事务的回滚操作,可以在OrderServiceImpl类中自己加个除0的异常,用来模拟微服务调用链路的故障,导致出现分布式事务的问题。

正常情况下:

 

 异常情况下:

 修改后重启order服务

再次访问后查看数据库,发现成功回滚,没有出现分布式事务问题

查看seata控制台,可以看到详细信息

这篇关于seata服务1.3.0版本搭建(你说你讨厌母亲的市侩圆滑,却不知她也曾松花酿酒,春水煎茶;你说你讨厌父亲的世故虚伪,却不知他也曾满目星辰,桀骜潇洒。)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

usaco 1.3 Calf Flac(暴搜)

思路是暴搜。 需要注意的地方是输入的方法,以及输出时的换行。 代码: /*ID: who jayLANG: C++TASK: calfflac*/#include<stdio.h>#include<string.h>#include<math.h>int main(){freopen("calfflac.in","r",stdin);freopen("calfflac.ou