Seata 的部署和集成

embedded/2024/9/18 12:24:44/ 标签: 分布式, 分布式事务, Seata

文章目录

  • 一、部署Seata的tc-server
      • 1.1 Windows部署seataServer
        • 1.下载
        • 2.解压
        • 3.修改配置
      • 1.2 docker部署seataServer
  • 二.在nacos添加配置
  • 三.启动TC服务
    • 3.1 docker方式运行 重启容器即可
    • 3.2 Win 运行
  • 四、微服务集成seata
    • 1.引入依赖
    • 2.修改配置文件

在这里插入图片描述


Seatatcserver_8">一、部署Seata的tc-server

1.1 Windows部署seataServer

1.下载

首先我们要下载seata-server包,地址在 https://seata.apache.org/zh-cn/unversioned/download/seata-server/

2.解压

在非中文目录解压缩这个zip包,其目录结构如下:

在这里插入图片描述

3.修改配置

修改 conf 目录下的registry.conf文件:

在这里插入图片描述

1.2 docker部署seataServer

创建并运行容器

docker run --name seata --restart=always -p 8091:8091 -e SEATA_IP=192.168.200.130 -e SEATA_PORT=8091 -v seata-config:/seata-server/resources -id seataio/seata-server:1.4.2

修改配置

# 进入挂载目录
cd /var/lib/docker/volumes/seata-config/_data# 修改配置文件
vi registry.conf:%d   清空文本内容

内容如下:

registry {# tc服务的注册中心类,这里选择nacos,也可以是eureka、zookeeper等type = "nacos"nacos {# seata tc 服务注册到 nacos的服务名称,可以自定义 spring.application.nameapplication = "seata-tc-server"serverAddr = "192.168.200.130:8848"group = "DEFAULT_GROUP"namespace = ""cluster = "SH"username = "nacos"password = "nacos"}
}config {# 读取tc服务端的配置文件的方式,这里是从nacos配置中心读取,这样如果tc是集群,可以共享配置type = "nacos"# 配置nacos地址等信息nacos {serverAddr = "192.168.200.130:8848"namespace = ""group = "DEFAULT_GROUP"username = "nacos"password = "nacos"dataId = "seataServer.properties"}
}

二.在nacos添加配置

特别注意,为了让 tc 服务的集群可以共享配置,我们选择了nacos 作为统一配置中心。因此服务端配置文件seataServer.properties文件需要在nacos中配好。

格式如下:

在这里插入图片描述

配置内容如下:

# 数据存储方式,db代表数据库
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://192.168.200.130:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=root
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
# 事务、日志等配置
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000# 客户端与服务端传输方式
transport.serialization=seata
transport.compressor=none
# 关闭metrics功能,提高性能
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898

其中的数据库地址、用户名、密码都需要修改成你自己的数据库信息。

特别注意:tc 服务在管理分布式事务时,需要记录事务相关数据到数据库中,需要提前创建好这些表。

新建一个名为 seata 的数据库,运行提供的sql文件:

这些表主要记录全局事务、分支事务、全局锁信息:


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- 分支事务表
-- ----------------------------
DROP TABLE IF EXISTS `branch_table`;
CREATE TABLE `branch_table`  (`branch_id` bigint(20) NOT NULL,`xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`transaction_id` bigint(20) NULL DEFAULT NULL,`resource_group_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`branch_type` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`status` tinyint(4) NULL DEFAULT NULL,`client_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`gmt_create` datetime(6) NULL DEFAULT NULL,`gmt_modified` datetime(6) NULL DEFAULT NULL,PRIMARY KEY (`branch_id`) USING BTREE,INDEX `idx_xid`(`xid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;-- ----------------------------
-- 全局事务表
-- ----------------------------
DROP TABLE IF EXISTS `global_table`;
CREATE TABLE `global_table`  (`xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`transaction_id` bigint(20) NULL DEFAULT NULL,`status` tinyint(4) NOT NULL,`application_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`transaction_service_group` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`transaction_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`timeout` int(11) NULL DEFAULT NULL,`begin_time` bigint(20) NULL DEFAULT NULL,`application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`gmt_create` datetime NULL DEFAULT NULL,`gmt_modified` datetime NULL DEFAULT NULL,PRIMARY KEY (`xid`) USING BTREE,INDEX `idx_gmt_modified_status`(`gmt_modified`, `status`) USING BTREE,INDEX `idx_transaction_id`(`transaction_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;SET FOREIGN_KEY_CHECKS = 1;

三.启动TC服务

3.1 docker方式运行 重启容器即可

docker restart seata

3.2 Win 运行

进入bin目录,运行其中的seata-server.bat即可:

在这里插入图片描述

启动成功后,seata-server 应该已经注册到nacos注册中心了。

打开浏览器,访问nacos地址:http://localhost:8848,然后进入服务列表页面,可以看到seata-tc-server的信息:

在这里插入图片描述


四、微服务集成seata

1.引入依赖

首先,我们需要在微服务中引入seata依赖:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId><exclusions><!--版本较低,1.3.0,因此排除--><exclusion><artifactId>seata-spring-boot-starter</artifactId><groupId>io.seata</groupId></exclusion></exclusions>
</dependency>
<!--seata starter 采用1.4.2版本-->
<dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId><version>${seata.version}</version>
</dependency>

2.修改配置文件

需要修改application.yml文件,添加一些配置:

seata:registry: # TC服务注册中心的配置,微服务根据这些信息去注册中心获取tc服务地址# 参考tc服务自己的registry.conf中的配置type: nacosnacos: # tcserver-addr: 192.168.200.130:8848namespace: ""group: DEFAULT_GROUPapplication: seata-tc-server # tc服务在nacos中的服务名称tx-service-group: seata-demo # 事务组,根据这个获取tc服务的cluster名称service:vgroup-mapping: # 事务组与TC服务cluster的映射关系seata-demo: SH


http://www.ppmy.cn/embedded/102448.html

相关文章

从零上手CV竞赛Task2 # Datawhale AI夏令营

文章目录 平台参赛平台云平台 Task 1 从零上手CV竞赛下载baseline相关文件一键运行baseline&#xff01;&#xff08;大约需要25分钟&#xff09;赛题解析数据集提交结果违法标准注意事项 下载生成的文件结果如图最后要记得关机 不然一直消耗算力 Task 2 建模方案解读与进阶物体…

【教程】实测np.fromiter 和 np.array 的性能

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 函数简介 np.fromiter np.array 测试代码 实验结果 结果分析 实验总结 学长想说 函数简介 np.fromiter np.fromiter 是 NumPy 提供的一…

经验笔记:Token、Session、Cookie 及密码级别安全存储

经验笔记&#xff1a;Token、Session、Cookie 及密码级别安全存储 一、引言 在现代Web开发中&#xff0c;保持用户会话状态和确保数据安全至关重要。本文将探讨如何利用Token、Session 和 Cookie 这三个概念来实现安全的用户认证及会话管理&#xff0c;并重点介绍如何存储密码…

搭建自己的GPT

搭建自己的GPT 文章说明核心代码效果展示源码下载 文章说明 目前GPT的使用比较主流&#xff0c;现有开源大模型&#xff0c;可以拉取到本地进行部署&#xff0c;搭建属于自己的GPT对话工具&#xff1b;主要用于熟悉大模型的本地搭建&#xff1b;本文采用开源的Ollama进行服务提…

【ceph学习】S3权限认证部分

认证过程简介 认证的过程是一个对用户信息进行解析并且判断前后得到的秘钥是否一致的过程。 auth_regitry的创建 在rgw_main.cc:main()中进行初始化auth_registry对象 /*rgw_main.cc*/ /* Initialize the registry of auth strategies which will coordinate * the dynamic…

【XR】优化SLAM SDK的稳定性

优化SLAM SDK的稳定性是确保增强现实 (AR) 和虚拟现实 (VR) 应用在各种环境和设备上都能稳定运行的关键。以下是一些主要的优化方法&#xff1a; 1. 传感器融合优化 方法: 将多个传感器的数据&#xff08;如摄像头、加速度计、陀螺仪、磁力计&#xff09;进行融合&#xff0c…

Linux 系统收发网络包

国际标准网络模型 国际标准网络模型通常指的是 OSI&#xff08;Open Systems Interconnection&#xff09;参考模型&#xff0c;它是一个由国际标准化组织&#xff08;ISO&#xff09;定义的网络通信模型&#xff0c;用于指导网络协议的设计和实现。该模型将计算机网络通信划分…

经验笔记:选择消息中间件——RabbitMQ vs RocketMQ vs Apache Kafka

经验笔记&#xff1a;选择消息中间件——RabbitMQ vs RocketMQ vs Apache Kafka 一、引言 消息中间件是现代分布式系统的重要组成部分&#xff0c;用于在不同的服务之间传递消息&#xff0c;实现解耦和异步通信。选择合适的消息中间件对于确保系统高效运行、增强可维护性和扩…

Leetcode Hot 100刷题记录 -Day2(哈希表)

一、字母异位词分组 问题描述&#xff1a; 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 简单理解&#xff1a;字母异位词就是字母个数和种类都相同&#xff0c;但字…

大数据之数据湖Apache Hudi

一、Hudi框架概述 Apahe Hudi (Hadoop Upserts delete and Incrementals) 是Uber主导开发的开源数据湖框架&#xff0c;为了解决大数据生态系统中需要插入更新及增量消费原语的摄取管道和ETL管道的低效问题&#xff0c;该项目在2016年开始开发&#xff0c;并于2017年开源&#…

gNB UE发送Timing AdvanceCommand

gNB UE发送Timing AdvanceCommand 在5G网络中&#xff0c;gNB&#xff08;gNodeB&#xff09;是核心网络的重要组成部分&#xff0c;负责处理无线链路相关的所有通信。UE&#xff08;User Equipment&#xff0c;用户设备&#xff09;在与gNB通信时&#xff0c;可能会发送Timing…

redis 主从及哨兵搭建

主从&#xff08;replication&#xff09; Redis 中&#xff0c;主从复制是一种常用的高可用性和负载均衡机制。 主节点&#xff08;Master&#xff09;: 主节点是处理所有写操作的节点。它接收客户端的写入请求&#xff0c;并将这些请求的数据变更传播到从节点。 从节点&…

【精选】基于springboot个人理财APP(源码+设计+辅导)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

数学建模学习(124):使用Python实现模糊ARAS方法从原理到实战

文章目录 1. 引言2. 模糊ARAS方法原理2.1 模糊数的表示3. 案例分析:设备采购决策3.1 数据来源3.2 权重设定3.3 数据集3.4 Python实现模糊ARAS方法3.5 结果分析3.6 模糊ARAS的优势3.7 应用场景4. 总结参考文献1. 引言 在复杂的决策场景中,决策者往往面对的不仅仅是多个选择(…

MySQL入门学习-对系统数据库的常用查询

通常情况下&#xff0c;MySQL 中的系统数据库有 information_schema、mysql 和 performance_schema。这些数据库提供了有关数据库服务器的各种信息&#xff0c;例如表结构、用户权限、性能指标等。 一、使用这些系统数据库进行常用查询的示例&#xff1a; 1. 查询表结构信息&…

Spark MLlib模型训练—分类算法 Decision tree classifier

Spark MLlib模型训练—分类算法 Decision tree classifier 决策树(Decision Tree)是一种经典的机器学习算法,广泛应用于分类和回归问题。决策树模型通过一系列的决策节点将数据划分成不同的类别,从而形成一棵树结构。每个节点表示一个特征的分裂,叶子节点代表最终的类别标…

【生活英语】4、音乐

【生活英语】4、音乐 1、关键词(1) 音乐种类(2) symphony 交响乐(3) song 歌曲(4) instruments 乐器 2、句子3、英语对话 1、关键词 (1) 音乐种类 pop music 流行音乐country music 乡村音乐rock and roll 摇滚乐jazz 爵士乐blues 布鲁斯音乐classical music 古典音乐folk mu…

153页PPT丨麦肯锡-咨询公司流程管理体系规划建设方法论

麦肯锡作为全球知名的咨询公司&#xff0c;在流程管理体系规划建设方面有一套独特的方法论&#xff0c;以下为你详细介绍&#xff1a; 知识星球APP搜索【战略咨询文库】&#xff0c;下载700多份资料 一、明确目标与需求 与客户深入沟通 了解客户的业务战略、发展目标以及面…

基差、升水与贴水,股指期货市场的重要概念解析

在股指期货市场中&#xff0c;基差、升水和贴水是三个至关重要的概念。它们不仅影响着市场的价格动态&#xff0c;还对套利和套期保值者的策略制定具有重大意义。本文将详细解析这三个概念&#xff0c;帮助读者更好地理解期货市场的运作机制。 一、基差&#xff1a;现货与期货…

数学问题+贪心

前言&#xff1a;一开始我想的就是我每次都设置一个cnt记录每次增加量&#xff0c;后面都增加这个量&#xff0c;但是发现我忘记要把这个量先加到后面的元素上面去 正确的做法就是每次 a [ i ] > a [ i − 1 ] a[ i ] > a[ i-1 ] a[i]>a[i−1] 的时候再进行处理&…