Seata高可用集群搭建(将事务组映射配置到nacos)
·
Seata高可用
1、高可用集群结构
TC的异地多机房容灾架构
TC服务作为Seata的核心服务,一定要保证高可用和异地容灾。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-diLEWkSx-1654690129667)(images/image-20220608190355967.png)]](https://i-blog.csdnimg.cn/blog_migrate/0551bce9dbe10eb0530c779c632063e9.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)]](https://i-blog.csdnimg.cn/blog_migrate/acf7e85b1f8cf7c0f40023daa9fd2dd6.png)
2.1、将事务组映射配置到nacos
为了热更新,不用在代码上修改选择集群,在代码上修改需要重新启动服务器
接下来,我们需要将tx-service-group与cluster的映射关系都配置到nacos配置中心(配置管理)。
新建一个配置:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O5A6HPok-1654690129669)(images/image-20220608191802085.png)]](https://i-blog.csdnimg.cn/blog_migrate/d56d4665b74859f9c5291b521efbadd3.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)]](https://i-blog.csdnimg.cn/blog_migrate/2c13040ef897e3613e3ea73b54eb532e.png)
同理切换配置文件中的集群名称查看是否8092端口的服务有注册上来
更多推荐



所有评论(0)