seata事务组关联集群地址的问题

来源:15-7 Seata Client配置Nacos

HenceForward

2024-08-23

在seataServer.properties里面配置的集群地址并未生效,也无法实现切换集群地址,seata-client会坚持从nacos注册中心获取seata集群的地址。请问这是什么原因导致的?

service.vgroupMapping.train-group=default
# 下面的配置并未生效,注释掉或者改成错误的都不会影响seata全局事务发挥作用
service.default.grouplist=1.1.1.1:8091

而且我在测试过程中发现,这里service.vgroupMapping.train-group指定的集群名称,似乎需要和seata-server在nacos中注册的集群名称保持一致,并不可以随意切换。请问是我哪里配置错误了吗?

我怕我描述的不够清晰,下面给出例子:

  • seate-server的applicaiton.yaml
seata:
  config:
    # support: nacos, consul, apollo, zk, etcd3
    type: nacos
    nacos:
      server-addr: 192.168.124.10:8848
      namespace: train-12306
      group: SEATA_GROUP
      data-id: seataServer.properties
  registry:
    type: nacos
    nacos:
      application: seata-server
      server-addr: 192.168.124.10:8848
      group: SEATA_GROUP
      namespace: train-12306
      cluster: seata-cluster # 注意这里不是default
  • seata-client 的配置
seata:
  config:
    # 获取到全局的db配置
    type: nacos
    nacos:
      server-addr: 192.168.124.10:8848
      namespace: train-12306
      group: SEATA_GROUP
      data-id: seataServer.properties
  registry:
    type: nacos
    nacos:
      application: seata-server
      server-addr: 192.168.124.10:8848
      group: SEATA_GROUP
      namespace: train-12306
      cluster: seata-cluster # 这里必须保证和seata-server一致
  # 把事务组的配置外放
  tx-service-group: train-group
  • seataServer.properties的配置
# 这里如果不和 seata-server 的 注册 cluster 保持一致就无法通过nacos获取地址,所以课程中说的效果要如何做到??
service.vgroupMapping.train-group=seata-cluster
# 这里直接给一个错误的url,事实上根本就不会生效
service.seata-cluster.grouplist=192.168.124.20:0 

补充:
另外,我测试了使用seata集群同时注册到naocs,如图所示,发现这是可行的,nacos会轮询使用seata的服务端。
图片描述
因此我觉得此处是老师讲课有误,无需手动配置事务组与集群地址关联,且即使手动关联也无法生效。而因配置seata服务集群实现高可用。

这里我给出seata-client的配置,无需关联nacos配置中心,且直接在客户端中指定事务组关联的集群名称就行,不在远程配置中心中加入配置。同样能实现需求。

seata:
  registry:
    # support: nacos, eureka, redis, zk, consul, etcd3, sofa
    type: nacos
    nacos:
      server-addr: 192.168.124.10:8848
      application: seata-server
      group: SEATA_GROUP
      namespace: train-12306
      cluster: seata-cluster
  # 配置全局事务组
  tx-service-group: train-group
  service:
    vgroup-mapping:
      train-group: seata-cluster

而且这里我提出猜想,seata-server注册的nacos中心,无需和微服务一样,因为在seata-client的配置需要指定seata-server的nacos地址。

请答疑解惑,谢谢。

写回答

1回答

甲蛙

2024-09-06

为同学点赞,能自己专研!关于集群,我课程里没有介绍,这块得参考官方的文档,目前seata捐给apache了,版本也变了,我也得找时间重新研究。

0
1
HenceForward
非常感谢!
2024-09-06
共1条回复

新版Springboot3.0打造能落地的高并发仿12306售票系统

最新版Spring3.0仿12306售票系统实战

852 学习 · 512 问题

查看课程