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 数据库连接 mybatis
MyBatis中支持的JdbcType 和JavaType
MyBatis中支持的JdbcType 和JavaType
977 3
|
3月前
|
弹性计算 监控 安全
等保2.0合规实践:利用阿里云产品快速满足三级等保要求
网络安全等级保护2.0是企业必须履行的法定责任。上云企业可依托阿里云“责任共担”模型,继承其三级等保合规基座,聚焦租户侧安全建设。通过VPC、云防火墙、WAF、云安全中心、RAM、SLS等产品,体系化构建“一个中心、三重防护”的云上合规架构,实现快速、低成本过保,并将合规转化为持续安全能力。(238字)
|
3月前
|
SQL 容灾 Nacos
Seata的部署和集成
本文介绍Seata分布式事务的部署与微服务集成全过程。包含TC服务搭建、Nacos配置中心对接、数据库表初始化、高可用集群部署及微服务整合步骤,实现事务组映射动态管理,支持异地容灾与集群切换,提升系统稳定性与可维护性。(239字)
|
3月前
|
容灾 关系型数据库 Nacos
Seata的部署和集成
本文介绍Seata分布式事务框架的部署与微服务集成,包括TC服务搭建、Nacos配置中心集成、数据库表初始化及高可用集群部署,并实现通过Nacos动态管理事务组映射,提升系统容灾能力。
|
NoSQL Java Nacos
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
1346 3
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
33891 0
|
Kubernetes 容器 Perl
k8s部署seata 报错 没有提供足够的身份验证信息 [ http-nio-7091-exec-2] [ty.JwtAuthenticationEntryPoint] [ commence] [] : Responding with unauthorized error. Message - Full authentication is required to access this resource
Kubernetes pod 在16:12时出现两次错误,错误信息显示需要完整认证才能访问资源。尽管有此错误,但页面可正常访问。附有yaml配置文件的图片。
1102 2
|
Kubernetes 负载均衡 应用服务中间件
部署Kubernetes(k8s)多主的高可用集群
在CentOS7上安装Kubernetes多主节点的集群,并且安装calico网络插件和metallb。使用keepalived和haproxy进行负载均衡。最后部署应用
5513 0
|
SQL Oracle 关系型数据库
Seata常见问题之2.0报错找不到类如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
593 0