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

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代