Seata高可用集群搭建(将事务组映射配置到nacos)

Seata高可用

1、高可用集群结构

TC的异地多机房容灾架构

TC服务作为Seata的核心服务,一定要保证高可用和异地容灾。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-diLEWkSx-1654690129667)(images/image-20220608190355967.png)]

2、模拟异地容灾的TC集群

计划启动两台seata的tc服务节点:

节点名称 ip地址 端口号 集群名称
seata 127.0.0.1 8091 SH
seata2 127.0.0.1 8092 HZ

之前我们已经启动了一台seata服务,端口是8091,集群名为SH。

现在,将seata目录复制一份,起名为seata2,然后修改一下集群的名称,其他的不需要动

新版的需要指定一下服务地址,自定义,默认的是7091

server:
  port: 7093

进入seata2/bin目录,然后运行命令:

seata-server.bat -p 8092

打开nacos控制台,查看服务列表:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xHlVr2qL-1654690129668)(images/image-20220608191335826.png)]

2.1、将事务组映射配置到nacos

为了热更新,不用在代码上修改选择集群,在代码上修改需要重新启动服务器

接下来,我们需要将tx-service-group与cluster的映射关系都配置到nacos配置中心(配置管理)。

新建一个配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O5A6HPok-1654690129669)(images/image-20220608191802085.png)]

配置信息如下:

根据需要修改集群的名称

# 事务组映射关系
service.vgroupMapping.seata-demo=SH

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

2.2、微服务读取nacos配置

接下来,需要修改每一个微服务的application.yml文件,让微服务读取nacos中的client.properties文件:

原来的事务组可以注释掉(事务组与TC服务cluster的映射关系)

seata:
  config:
    type: nacos
    nacos:
      server-addr: 127.0.0.1:8848
      username: nacos
      password: nacos
      group: SEATA_GROUP
      data-id: client.properties

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

可以查看启动的Steata控制台进行一个输出查看【查看IDEA控制台也可以查看连接到哪一个集群】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jhRo6p5f-1654690129669)(images/image-20220608192606770.png)]

同理切换配置文件中的集群名称查看是否8092端口的服务有注册上来

猜你喜欢

转载自blog.csdn.net/baidu_39378193/article/details/125191518