Seata的部署和集成

简介: 本文介绍Seata TC服务器的部署与微服务集成,包括下载解压、Nacos配置中心设置、数据库表初始化、高可用集群搭建及事务组映射配置,实现分布式事务统一管理。

一、部署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包,其目录结构如下:

IN一运行脚本

BIN?

CONF?配置文件

LIB一+依赖库

LOGS

LICENSE


3.修改配置
修改conf目录下的application.yml文件,内容如下:
4.在nacos添加配置
特别注意,为了让tc服务的集群可以共享配置,我们选择了nacos作为统一配置中心。因此服务端配置文件seataServer.properties文件需要在nacos中配好。格式如下:

新建配置

SEATASERVER.PROPERTIES

DATA ID:

GROUP:

SEATA GROUP

更多高级选项

描述:

TEXT

JSON

XML

PROPERTIES

YAML

HTML

配置格式:

1234567

#数据存储方式,DB代表数据库

配置内容:

STORE.MODE-DB

STORE.DB.DATASOURCEDRUID

STOREDBTYPEMYSQL

STORE.DB.DRIVERCLASSNAME-COM.MYSQL.JDBC.DRIVER

STORS-DB,URL-IDBC:MYSQL://127.9.0.0.1;3306/SEATARUSEUNICODE-TRUE8REWRITEBATCHEDSTATEMENTS-TRUS

STORE.DB.USERROOT


配置内容如下:
其中的数据库地址、用户名、密码都需要修改成你自己的数据库信息。
5.创建数据库表
特别注意:tc服务在管理分布式事务时,需要记录事务相关数据到数据库中,你需要提前创建好这些表。
新建一个名为seata的数据库,运行sql(这些表主要记录全局事务、分支事务、全局锁信息):
6.启动TC服务
进入bin目录,运行其中的seata-server.bat即可,启动成功后,seata-server应该已经注册到nacos注册中心了。打开浏览器,访问seata控制台;地址:http://localhost:7091

LOCALHOST:7091/#/TRANSACTIONLNFO

SEATA

首页博客社区

SEATA

事务信息/基础列表页

SEATA

事务信息

事务信息

创建时间

起始日期

请输入筛选条件

XID

结束日期

请输入筛选条件

APPLICATIONLD

全局锁信息

是否包含分支事务

Q搜索

话选择筛选条件

C五宝

操作

XID

TIMEOUT

TRANSACTIONNAME

APPLICATIONLD

BEGINTIME

STATUS

TRANSACTIONLD

APPLICATIONDATA

TRANSACTIONSERVICEGROUP

没有数据

<上一页

下一页

10

每页显示:


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

NACOS.

社区

文档

首页

博客

NACOS

NACOS 1.4.3

PUBLIC

服务列表

PUBLIC

配置管理

服务管理

隐藏空服务:

服务名称

分组名称

直询

请输入服务名称

请输入分组名称

创建服务

服务列表

触发保护阀值

健康实例数

分组名称

操作

实例数

集群数目

服务名

订阅者列表

1

DEFAULT_GROUP

1

详情|示例代码

FALSE

删除

AOCOUNT-SERVICE

权限控制

1

1

DEFAULT GROUP

FALSE

删除

示例代码

详情

命名空间

1

DEFAULT_GROUP

FALSE

详情

示例代码

删除

焦群管理

1

DEFAULT GROUP

示例代码|删除

详情

FALSE

STORAGE-SERVICE

10 V

每页显示:


二、微服务集成seata
需要进行分布式事务处理的每个微服务上都配置如下:
1.引入依赖
首先,我们需要在每个微服务中引入seata依赖:
2.修改配置文件
需要修改每个微服务中的application.yml文件,添加一些配置:
三、TC服务的高可用和异地容灾
1.模拟异地容灾的TC集群
计划启动两台seata的tc服务节点:

节点名称

ip地址

端口号

集群名称

seata

127.0.0.1

8091

GZ

seata2

127.0.0.1

8092

HZ

之前我们已经启动了一台seata服务,端口是8091,集群名为GZ。现在,将seata目录复制一份,起名为seata2。修改seata2/conf/application.yml内容如下:
进入seata2/bin目录,然后运行双击 seata-server.bat。打开nacos控制台,查看服务列表:

服务列表

PUBLIC

隐藏空服务:

请输入分组名称

服务名称

查询

请输入服务名称

分组名称

创建服务

实例数

分组名称

触发保护阈值

操作

集群数目

健康实例数

服务名

1

1

FALSE

详情|示例代码订阅者|删除

DEFAULT_GROUP

ACCOUNT-SERVICE

示例代码

FALSE

订阅者

DEFAULT GROUP

详情

删除

ORDER-SERVICE

详情|示

DEFAULT_GROUP

2

示例代码订阅者|删除

FALSE

SEATA-SERVER

DEFALIT GROUD

FALSE

详情示做代码订阅老|严吟

STORANE-SERVICE


点进详情查看:

集群:HZ

集群配置

KEY

VALUE

IP

端口

元数据

临时实例

健康状态

权重

操作

编辑

下线

8092

192.168.118.1

TRUE

TRUE

集群:GZ

集群配置

KEY

VALUE

IP

临时实例

端口

权重

元数据

操作

健康状态

下线

192.168.118.1

编辑

8091

TRUE

TRUE


2.将事务组映射配置到nacos
接下来,我们需要将tx-service-group与cluster的映射关系都配置到nacos配置中心。新建一个配置:

新建配置

CLIENT.PROPERTIES

DATA ID:

SEATA GROUP

GROUP:

更多高级选项

描述:

配置格式:

YAML

JSON

XML

TEXT

HTML

PROPERTIES

配置内容:


配置的内容如下:

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

也注释掉原来文件中的如下内容(如果不注释也可以;则作为一个默认,对动态切换集群不受影响):

Plain Text

复制代码

1

2

3

service:

vgroup-mapping: # 事务组与TC服务cluster的映射关系

seata-demo: GZ

重启微服务,现在微服务到底是连接tc的GZ集群,还是tc的HZ集群,都统一由nacos的client.properties来决定了。

若有收获,就点个赞吧


相关文章
|
Java 数据库连接 Spring
SpringBoot2 | BeanDefinition 注册核心类 ImportBeanDefinitionRegistrar 源码分析 (十)
SpringBoot2 | BeanDefinition 注册核心类 ImportBeanDefinitionRegistrar 源码分析 (十)
362 0
|
1月前
|
人工智能 缓存 搜索推荐
阿里云百炼产品月报【2025年10月】
通义千问本月重磅升级:发布9款Qwen3-VL多模态模型,支持视频理解、2D/3D定位;MCP生态新增17项服务;推出电商AI生图模板,助力商家降本增效。
|
IDE Ubuntu 开发工具
2025年vscode (visual studio code)国内高速下载加速镜像,极速秒下!
Visual Studio Code(简称VSCode)是一款由微软开发的轻量级IDE,支持多种操作系统,以其高效、跨平台和免费的特点受到广泛欢迎。针对国内用户下载速度慢的问题,终于有了国内镜像,访问 https://www.baihezi.com/vscode/download
7206 10
2025年vscode (visual studio code)国内高速下载加速镜像,极速秒下!
|
XML Java Maven
修改一行注解引起的故障
作者记录了故障发生时的排查思路,再对问题进行详细描述并分析根本原因,最终找到解决方案。
223 10
|
关系型数据库 MySQL 数据库
【随手记】MySQL快照读和当前读
【随手记】MySQL快照读和当前读
474 0
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
2431 2
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
|
中间件 FESCAR Apache
你好!Apache Seata(incubating)
你好!Apache Seata(incubating)
1251 98
|
SQL 监控 Java
C3P0数据库连接池
C3P0数据库连接池
389 0
|
网络协议 Shell Linux
推荐一款开源跨平台的超级终端工具-windterm
一款风格独特、开源、且完全免费的SSH/Telnet/Serial/Shell/Sftp 客户端
推荐一款开源跨平台的超级终端工具-windterm

热门文章

最新文章