1、Seata介绍

Seata是阿里开源的一款分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。数据库事务我们都知道,事务都是遵循ACID原则。而通过使用Seata可以实现在两个服务模块通过RPC调用时触发事务,如果有异常会实现业务数据回滚,保证数据的一致性。

官网地址:https://seata.io/zh-cn/

GitHub地址:https://github.com/seata/seata

由于在北京时间2023年10月29日,该分布式事务开源项目 Seata 正式通过 Apache 基金会的投票决议,以全票通过的优秀表现正式成为 Apache 孵化器项目!详细信息可查看:https://developer.aliyun.com/article/1379627 ,所以现在官网最新地址为:

最新官网地址:

https://seata.apache.org/zh-cn/

https://seata.apache.org/zh-cn/docs/overview/what-is-seata

GitHub地址:

https://github.com/apache/incubator-seata

Apache孵化器地址:

https://incubator.apache.org/clutch/seata.html

2、Seata下载1.3.0

根据使用的Spring Cloud Alibaba版本下载推荐的Seata版本

https://github.com/apache/incubator-seata/releases

3、Seata服务配置

3.1、修改配置文件存储模式为使用DB高可用模式

Seata默认使用 file 模式,使用file模式启动完成可以看到持久化的本地文件root.data,除了file模式外还支持DB、redis, Seata的高可用依赖于注册中心、配置中心和数据库来实现。所以这里我们配置为DB模式。首先下载对应版本的Mysql数据库:https://github.com/apache/incubator-seata/blob/v1.3.0/script/server/db/mysql.sql 下载成功后,把数据库表信息导入MySQL数据库。导入成功后会生成3张表:

进入seata目录修改seata/conf下面的file.conf文件store.mode属性为db,如果没有file.conf文件,把file.conf.example文件拷贝一份进行重新命名。

配置成功后。文件下面有个db属性,在db属性里面配置数据库连接信息:

db {
## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.
datasource = "druid"
## mysql/oracle/postgresql/h2/oceanbase etc.
dbType = "mysql"
driverClassName = "com.mysql.cj.jdbc.Driver"
url = "jdbc:mysql://127.0.0.1:3306/seata"
user = "root"
password = "1234qwer"
minConn = 5
maxConn = 30
globalTable = "global_table"
branchTable = "branch_table"
lockTable = "lock_table"
queryLimit = 100
maxWait = 5000
}
3.2、修改seata配置中心和注册中心实现高可用

进入seata目录的seata/conf里面,先将registry.conf文件拷贝一份registry.conf.init以防万一改错了,接下来编辑registry.conf。首先把注册中心改为nacos。设置registry属性类型为nacos,然后在nacos属性中配置nacos连接信息

registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos" nacos {
application = "seata-server"
serverAddr = "127.0.0.1:8848"
group = "SEATA_GROUP"
namespace = "233b70c2-d6a8-482b-8a8d-e000b7a5c3a2"
cluster = "default"
username = "nacos"
password = "1234qwer"
}

在将配置中心也设置为nacos,config属性类型为nacos

config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos" nacos {
serverAddr = "127.0.0.1:8848"
namespace = "233b70c2-d6a8-482b-8a8d-e000b7a5c3a2"
group = "SEATA_GROUP"
username = "nacos"
password = "1234qwer"
}
}

部署文档:

https://seata.io/zh-cn/docs/v1.3/ops/deploy-guide-beginner

https://seata.apache.org/zh-cn/docs/v1.3/ops/deploy-guide-beginner/

Seata高可用部署:

https://seata.io/zh-cn/docs/v1.3/ops/deploy-ha

https://seata.apache.org/zh-cn/docs/v1.3/ops/deploy-ha/

4、上传配置文件到nacos

4.1 创建config.txt

在seata目录里面创建一个config.txt文件在改文件中添加配置信息,配置信息可以参考 https://github.com/apache/incubator-seata/blob/v1.3.0/script/config-center/config.txt 也可以直接下载改文件。主要修改下面的信息:


//my_test_tx_group是可以自定义的修改成功后后面客户端集成要与服务器端一致,也可以不修改。
service.vgroupMapping.my_test_tx_group=default //把file改为db
store.mode= db //修改数据库连接信息
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true
store.db.user=root
store.db.password=1234qwer
4.2 创建nacos-config.sh

在seata目录里面创建一个nacos-config.sh启动脚本文件,添加文件内容可以参考 https://github.com/apache/incubator-seata/blob/v1.3.0/script/config-center/nacos/nacos-config.sh 也可以直接下载。修改nacos连接信息

if [[ -z ${host} ]]; then
host=127.0.0.1
fi
if [[ -z ${port} ]]; then
port=8848
fi
if [[ -z ${group} ]]; then
group="SEATA_GROUP"
fi
if [[ -z ${tenant} ]]; then
tenant="96a4551b-b576-4047-88e9-c17ed48342ae"
fi
if [[ -z ${username} ]]; then
username="nacos"
fi
if [[ -z ${password} ]]; then
password="1234qwer"
fi

host: nacos连接地址

port: nacos连接端口号

group:分组

tenant:命名空间namespace

username:用户名

password:密码

修改成功后执行该脚本,把config.txt文件内容导入nacos。

输出以上内容,说明脚本执行成功。查看nacos配置中心:

配置已经成功导入到nacos

5、启动Seata

启动命令进入seata/bin文件路径下执行 seata-server.sh 脚本启动。

./seata-server.sh > /dev/null 2>&1 &

使用 ps -ef|grep seata 目录查看是否启动成功。

查看nacos注册中心,看看服务是否存在。



发现该服务在注册中心已经注册成功了,说明seata服务搭建成功。客户端连接端口号为:IP:8091

微服务集成Spring Cloud Alibaba Seata(一)Seata服务搭建的更多相关文章

  1. Spring Cloud Alibaba 实战 之 Nacos 服务注册和发现

    服务注册与发现,服务发现主要用于实现各个微服务实例的自动化注册与发现,是微服务治理的核心,学习 Spring Cloud Alibaba,首先要了解框架中的服务注册和发现组件——Nacos. 一.Sp ...

  2. Spring Cloud Alibaba系列之分布式服务组件Dubbo

    本博客的例子代码可以在github找到下载链接:代码下载 SpringBoot.SpringCloud Alibaba系列博客专栏:链接 1.分布式理论 1.1.分布式基本定义 <分布式系统原理 ...

  3. Spring Cloud Alibaba 整合 Nacos 实现服务配置中心

    在之前的文章 <Nacos 本地单机版部署步骤和使用> 中,大家应该了解了 Nacos 是什么?其中 Nacos 提供了动态配置服务功能 一.Nacos 动态配置服务是什么? 官方是这么说 ...

  4. 微服务组件-----Spring Cloud Alibaba 注册中心Nacos的CP架构Raft协议分析

    前言 本篇幅是继  注册中心Nacos源码分析 的下半部分. 意义 [1]虽说大部分我们采用注册中心的时候考虑的都是AP架构,为什么呢?因为性能相对于CP架构来说更高,需要等待的时间更少[相对于CP架 ...

  5. Spring Cloud Alibaba 使用Nacos作为服务注册中心

    为什么需要注册中心? 在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用:服务管理,核心是有个服务注册表,心跳机制动态维护 : 服务注册 创建普通Spring ...

  6. Spring Cloud Alibaba 使用RestTemplate进行服务消费

    创建服务提供者工程 创建spring-cloud-alibaba-service-member工程,会员中心服务该服务提供用户会员信息. pom.xml <?xml version=" ...

  7. Spring Cloud Alibaba 使用Feign进行服务消费

    为什么使用Feign? Feign可以把Rest的请求进行隐藏,伪装成类似SpringMVC的Controller一样.你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做. 使用Fei ...

  8. Spring Cloud Alibaba+Nacos搭建微服务架构

    1. Spring Cloud Alibaba 简介    Spring Cloud Alibaba是阿里巴巴为分布式应用提供的一站式解决方案,能够更方便快捷地搭建分布式平台,nacos拥有着替换eu ...

  9. Spring Cloud Alibaba基础教程:Nacos服务发现与配置管理

    随着微服务概念的流行,越来越多的公司采用`Spring Cloud`全家桶构建微服务系统,实现业务的快速迭代.`Spring Cloud`提供了快速构建分布式微服务常用组件,包括`Spring Clo ...

  10. Spring Cloud Alibaba(8)---Feign服务调用

    Feign服务调用 有关Spring Cloud Alibaba之前写过五篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring Clo ...

随机推荐

  1. 苹果AppleMacOs最新Sonoma系统本地训练和推理GPT-SoVITS模型实践

    GPT-SoVITS是少有的可以在MacOs系统下训练和推理的TTS项目,虽然在效率上没有办法和N卡设备相提并论,但终归是开发者在MacOs系统构建基于M系列芯片AI生态的第一步. 环境搭建 首先要确 ...

  2. 开源大语言模型作为 LangChain 智能体

    概要 开源大型语言模型 (LLMs) 现已达到一种性能水平,使它们适合作为推动智能体工作流的推理引擎: Mixtral 甚至在我们的基准测试中 超过了 GPT-3.5,并且通过微调,其性能可以轻易的得 ...

  3. 【Android 逆向】r0zapataNative.apk 破解

    1. apk 安装到手机,需要输入内容,随便输入,提示fail... 2. apk 导入到jadx中查看一下 MainActivity.java String textData = "b2F ...

  4. CSS font-weight

    主要理解UI给得英文名 对应得数值 字体粗细:'font-weight'属性名称: font-weight取值: normal | bold | bolder | lighter | 100 | 20 ...

  5. 导致Redis访问慢的常见操作

    导致Redis访问慢的原因通常有2个方面: 第一,Redis本身性能出现了瓶颈,如:内存使用率过高,并发过大等 第二,存在大KEY,或者客户端访问命令使用不当引起的阻塞 在此,只列举因为的客户端命令使 ...

  6. linux服务器界面初始--day01

    linux服务器界面初始 ip add show 查看服务器网卡信息还可以使用ifconfig 局域网ip: 192.168.1.0 10.0.0.0 172.16.1.0 如果网卡没有启用,我们需要 ...

  7. python selenium list index out of range

    常见错误原因 常见错误原因 其他错误原因 场景 使用selenium循环打开并跳转到新的网页,然后关闭新的窗口,然后回到原来窗口,这时候获取list中的值,报错: list index out of ...

  8. Linux Cheat Sheet

  9. 一文读懂图数据库 Nebula Graph 访问控制实现原理

    摘要:数据库权限管理对大家都很熟悉,然而怎么做好数据库权限管理呢?在本文中将详细介绍 Nebula Graph 的用户管理和权限管理. 本文首发 Nebula Graph 博客:https://neb ...

  10. JS3-高级事件

    获取事件和处理事件的第二种方式:事件监听 如何获取和处理鼠标与键盘的基本事件? 事件监听方式 eventTarget.addEventListener(type,listener[,useCaptur ...