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

相关文章

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

usaco 1.3 Barn Repair(贪心)

思路:用上M块木板时有 M-1 个间隙。目标是让总间隙最大。将相邻两个有牛的牛棚之间间隔的牛棚数排序,选取最大的M-1个作为间隙,其余地方用木板盖住。 做法: 1.若,板(M) 的数目大于或等于 牛棚中有牛的数目(C),则 目测 给每个牛牛发一个板就为最小的需求~ 2.否则,先对 牛牛们的门牌号排序,然后 用一个数组 blank[ ] 记录两门牌号之间的距离,然后 用数组 an

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex