Seata的部署和集成

简介: 本文介绍Seata分布式事务框架的部署与集成。首先下载并解压seata-server-1.5.1,修改application.yml配置,将seataServer.properties配置上传至Nacos作为统一配置中心,并创建所需数据库表。启动tc-server后,注册到Nacos,通过控制台可查看服务状态。各微服务需引入Seata依赖,并在application.yml中配置相关参数。为实现高可用,可搭建多节点TC集群,如GZ和HZ集群,通过Nacos统一管理事务组映射,微服务从Nacos读取client.properties配置,动态切换TC集群连接,提升系统容灾能力。

Seata的部署和集成
一、部署Seata的tc-server
1.下载
下载seata-server地址在:http://seata.io/zh-cn/blog/download.html,版本:1.5.1。 或使用提供好的资料中的:seata-server-1.5.1.zip
2.解压
在非中文目录解压缩这个zip包,其目录结构如下:
3.修改配置
修改conf目录下的application.yml文件,内容如下:
4.在nacos添加配置
特别注意,为了让tc服务的集群可以共享配置,我们选择了nacos作为统一配置中心。 因此服务端配置文件seataServer.properties文件需要在nacos中配好。 格式如下:
配置内容如下:
其中的数据库地址、用户名、密码都需要修改成你自己的数据库信息。
5.创建数据库表
特别注意:tc服务在管理分布式事务时,需要记录事务相关数据到数据库中,你需要提前创建好这些表。
新建一个名为seata的数据库,运行sql(这些表主要记录全局事务、分支事务、全局锁信息):
6.启动TC服务
进入bin目录,运行其中的seata-server.bat即可,启动成功后,seata-server应该已经注册到nacos注册中心了。 打开浏览器,访问seata控制台; 地址:http://localhost:7091
打开浏览器,访问nacos地址:http://localhost:8848/nacos,然后进入服务列表页面,可以看到seata-server的信息:
二、微服务集成seata
需要进行分布式事务处理的每个微服务上都配置如下:
1.引入依赖
首先,我们需要在每个微服务中引入seata依赖:
2.修改配置文件
需要修改每个微服务中的application.yml文件,添加一些配置:
三、TC服务的高可用和异地容灾
1.模拟异地容灾的TC集群
计划启动两台seata的tc服务节点:
节点名称
ip地址
端口号
集群名称
座位
127.0.0.1
8091
GZ
SEATA2
127.0.0.1
8092
赫兹
之前我们已经启动了一台seata服务,端口是8091,集群名为GZ。 现在,将seata目录复制一份,起名为seata2。 修改seata2/conf/application.yml内容如下:
进入seata2/bin目录,然后运行双击 seata-server.bat。 打开nacos控制台,查看服务列表:
点进详情查看:
2.将事务组映射配置到nacos
接下来,我们需要将tx-service-group与cluster的映射关系都配置到nacos配置中心。 新建一个配置:
配置的内容如下:
Properties
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

事务组映射关系

service.vgroupMapping.seata-demo=GZ

service.enableDegrade=false
service.disableGlobalTransaction=false

与TC服务的通信配置

transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableClientBatchSendRequest=false
transport.threadFactory.bossThreadPrefix=NettyBoss
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
transport.threadFactory.shareBossWorker=false
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
transport.threadFactory.clientSelectorThreadSize=1
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
transport.threadFactory.bossThreadSize=1
transport.threadFactory.workerThreadSize=default
transport.shutdown.wait=3

RM配置

client.rm.asyncCommitBufferLimit=10000
client.rm.lock.retryInterval=10
client.rm.lock.retryTimes=30
client.rm.lock.retryPolicyBranchRollbackOnConflict=true
client.rm.reportRetryCount=5
client.rm.tableMetaCheckEnable=false
client.rm.tableMetaCheckerInterval=60000
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false

TM配置

client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.defaultGlobalTransactionTimeout=60000
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000

undo日志配置

client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
client.undo.logTable=undo_log
client.undo.compress.enable=true
client.undo.compress.type=zip
client.undo.compress.threshold=64k
client.log.exceptionRate=100
3.微服务读取nacos配置
接下来,需要修改每一个微服务的application.yml文件,让微服务读取nacos中的client.properties文件:
YAML
复制代码
1
2
3
4
5
6
7
8
9
seata:
config:
type: nacos
nacos:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
group: SEATA_GROUP
data-id: client.properties
也注释掉原来文件中的如下内容(如果不注释也可以; 则作为一个默认,对动态切换集群不受影响):
纯文本
复制代码
1
2
3
service:
vgroup-mapping: # 事务组与TC服务cluster的映射关系
seata-demo: GZ
重启微服务,现在微服务到底是连接tc的GZ集群,还是tc的HZ集群,都统一由nacos的client.properties来决定了。

相关文章
|
3月前
|
监控 Java Sentinel
Sentinel安装与集成
介绍如何切换hmall-micro项目至dev_02分支并提交代码,强调多分支并行开发模式。随后讲解Sentinel服务保护框架的安装与配置,包括控制台部署、本地运行及项目集成,实现微服务熔断降级,并通过簇点链路监控接口。
Sentinel安装与集成
|
3月前
|
负载均衡 Java 应用服务中间件
Gateway服务网关
Gateway服务网关是微服务架构的统一入口,具备路由转发、权限控制、限流及负载均衡等核心功能。基于SpringCloud Gateway可实现高性能响应式编程,支持丰富的断言与过滤器工厂,并可通过全局过滤器扩展自定义逻辑,有效解决跨域等问题,是微服务治理的关键组件。
208 0
|
4月前
|
Java Nacos Sentinel
Spring Cloud Alibaba 深度实战:Nacos + Sentinel + Gateway 整合指南
本指南深入整合Spring Cloud Alibaba核心组件:Nacos实现服务注册与配置管理,Sentinel提供流量控制与熔断降级,Gateway构建统一API网关。涵盖环境搭建、动态配置、服务调用与监控,助你打造高可用微服务架构。(238字)
1245 10
|
SQL 关系型数据库 数据库
学习分布式事务Seata看这一篇就够了,建议收藏
学习分布式事务Seata看这一篇就够了,建议收藏
22031 2
|
3月前
|
SQL 容灾 数据库
分布式事务Seata
Seata是阿里开源的分布式事务解决方案,提供XA、AT、TCC、SAGA四种模式,解决微服务架构下的跨库跨服务事务一致性问题。通过TC(事务协调者)、TM、RM三大角色实现全局事务管理,支持高可用部署与无缝集成Spring Cloud,助力系统实现最终一致或强一致性事务。
356 0
|
3月前
|
存储 NoSQL Linux
Redis集群部署指南
本教程基于CentOS7详解Redis集群部署,涵盖单机安装、主从复制、哨兵高可用及分片集群搭建。通过多实例模拟真实环境,深入讲解配置、启动、主从切换与数据读写测试,助你掌握Redis分布式架构核心技能。
471 0
|
3月前
|
消息中间件 存储 NoSQL
Mac系统安装教程
本文介绍在Mac系统上安装RabbitMQ的两种方法:通过Homebrew一键安装和二进制文件手动安装。RabbitMQ是基于AMQP协议的开源消息代理,支持异步通信、解耦服务,在微服务架构中广泛应用。教程涵盖安装、启动、验证全过程,附官网及参考链接,适合初学者快速上手部署。
78 0
|
3月前
|
JSON Dubbo Java
Feign远程调用
Feign简化Spring Cloud微服务间HTTP调用,替代RestTemplate,解决硬编码、可读性差问题。通过注解声明客户端,集成注册中心实现服务发现。支持自定义日志、编码器、连接池(如Apache HttpClient)优化性能,并可通过抽取公共模块实现最佳实践,提升代码复用与维护性。(238字)
140 0
|
网络协议 Java Nacos
SpringCloudAlibaba-Seata2.0.0与Nacos2.2.1
检查 Nacos 控制台,确认 Seata 服务器和 Spring Boot 应用已成功注册。 - 通过执行全局事务验证 Seata 的分布式事务管理功能。
1449 31