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来决定了。

若有收获,就点个赞吧


相关文章
|
1天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
938 150
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1662 8
|
7天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
617 152
|
9天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
587 15
|
9天前
|
人工智能 自然语言处理 API
Next AI Draw.io:当AI遇见Draw.io图表绘制
Next AI Draw.io 是一款融合AI与图表绘制的开源工具,基于Next.js实现,支持自然语言生成架构图、流程图等专业图表。集成多款主流大模型,提供智能绘图、图像识别优化、版本管理等功能,部署简单,安全可控,助力技术文档与系统设计高效创作。
672 151