Seata中的事务分组与集群

本文详细介绍了Seata中的事务分组和集群概念,包括事务分组的逻辑隔离作用,Seata服务端集群配置,客户端如何找到服务端集群,以及事务分组与高可用性的最佳实践,如异地多机房容灾、多应用接入、客户端精细化控制和预发与生产环境隔离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是事务分组和集群

事务分组:可以按微服务的需要,在应用程序(客户端)中对自行定义的事务进行分组,每组取一个名字,这个事务分组仅仅是seata的逻辑资源上的,其实是不存在的。

集群:seata服务端一个或多个节点组成的cluster(集群),应用程序(客户端)使用时需要指定事务逻辑分组与seata服务端集群的映射关系。

二、事务分组如何找到Seata服务端集群

1、首先应用程序(客户端)通过配置文件中的seata.tx-service-group属性配置了事务分组名

2、应用程序(客户端)会通过用户配置的配置中心在配置列表中去寻找service.vgroupMapping.[事务分组名]这么一个配置项,取得配置项的值就是TC集群的名称。如果应用程序是一个Spring Boot项目,则通过seata.service.vgroup-mapping.事务分组名=集群名称这么一个配置项获取TC集群的名称。

3、拿到TC集群名称后应用程序通过一定的前后缀+集群名称去构造服务名,各个注册中心服务名的实现是不同的。(前提是seata服务端已经在注册中心中完成服务注册,并且seata服务端向注册中心报告的cluster名与应用程序(客户端)配置的集群名称一致)

4、拿到服务名去相应的注册中心去拉取相应服务名的服务列表,获得后端真实的TC服务列表(即seata服务端集群节点列表)

三、为什么这么设计,不直接取服务名

这里多了一层获取事务分组到映射集群的配置,这样设计后事务分组可以作为资源的逻辑隔离单位,当某集群出现故障时可以快速进行failover(失效转移),只切换对应的事务分组,就可以把故障缩减到服务级别,但前提是需要有足够的seata服务端集群。

四、Seata服务端的集群配置

seata:
  config:
    type: nacos                                        # 使用nacos作为配置中心                                  
    nacos:
      server-addr: 192.168.1.108:28999                 # nacos配置中心IP:端口
      namespace: 93be67df-a5f5-42b6-89cb-e8f048782963  # nacos命名空间id,""为nacos保留public空间控件,用户勿配置namespace = "public"
      group: SEATA_GROUP                               # nacos配置中心的分组名
      username: nacos                                  # 指定nacos服务的登录账号
      password: nacos                                  # 指定nacos服务的登录密码
      data-id: seataServer.properties                  # 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值