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

若有收获,就点个赞吧


相关文章
|
8月前
|
容灾 关系型数据库 Nacos
Seata的部署和集成
本文介绍Seata分布式事务框架的部署与微服务集成全流程。包含TC服务搭建、Nacos配置中心对接、数据库表初始化、微服务整合Seata及高可用集群部署,并实现通过Nacos动态管理事务组映射,支持异地容灾与集群切换。
|
Java 数据库连接 mybatis
MyBatis中支持的JdbcType 和JavaType
MyBatis中支持的JdbcType 和JavaType
1168 3
|
8月前
|
容灾 关系型数据库 Nacos
Seata的部署和集成
本文介绍Seata分布式事务框架的部署与微服务集成,包括TC服务搭建、Nacos配置中心集成、数据库表初始化及高可用集群部署,并实现通过Nacos动态管理事务组映射,提升系统容灾能力。
|
8月前
|
负载均衡 应用服务中间件 Nacos
Nacos配置中心
本章深入讲解Nacos配置中心实战,涵盖配置管理、热更新、共享配置及优先级规则,并通过搭建Nacos集群实现高可用部署,结合Spring Cloud Alibaba实现微服务动态配置,提升系统可维护性与稳定性。
310 0
|
8月前
|
安全 Java jenkins
Spring Boot 多环境配置与 Profile 实战
Spring Boot通过Profile实现多环境配置,支持dev、test、prod等环境的独立配置。通过application-{profile}.yml分离配置,结合spring.profiles.active动态激活,实现一套代码适配多套环境,提升部署效率与安全性。
|
网络协议 Java Nacos
SpringCloudAlibaba-Seata2.0.0与Nacos2.2.1
检查 Nacos 控制台,确认 Seata 服务器和 Spring Boot 应用已成功注册。 - 通过执行全局事务验证 Seata 的分布式事务管理功能。
1849 31
|
SQL Java 数据库连接
MyBatis动态SQL字符串空值判断,这个细节99%的程序员都踩过坑!
本文深入探讨了MyBatis动态SQL中字符串参数判空的常见问题。通过具体案例分析,对比了`name != null and name != &#39;&#39;`与`name != null and name != &#39; &#39;`两种写法的差异,指出后者可能引发逻辑混乱。为避免此类问题,建议在后端对参数进行预处理(如trim去空格),简化MyBatis判断逻辑,提升代码健壮性与可维护性。细节决定成败,严谨处理参数判空是写出高质量代码的关键。
1975 0
|
NoSQL Java Nacos
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
1612 3
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
36630 1

热门文章

最新文章