Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。
原Fescar,即分布式事务解决方案。
今天学习使用的时候发现客户端启动成功后控制台一直报错can not get cluster name in registry config 'service.vgroupMapping.default_tx_group', please make sure registry config correct,问题解决过程记录如下:
复现:服务端 seata-server 版本 : 1.5.1
客户端 seata-spring-boot-starter 版本: 1.5.1
-
下载完最新的 seata-server 1.5.1 ,解压后,修改 application.yml配置文件为nacos 方式,然后执行启动文件(在安装目录 binseata-server.bat), 双击直接启动服务端。
-
客户端导入 seata-spring-boot-starter 依赖后启动,控制台疯狂报错。can not get cluster name in registry config 'service.vgroupMapping.default_tx_group', please make sure registry config correct
(如果是部署到Linux系统报的这个问题,也是一样的原因)
解决: 方案1:客户端添加 file.conf 和 registry.conf 配置。1.5.0 ~ 1.5.1 版本关于(seata/script/client/conf/)配置的地址
方案2: 客户端 application.yml 手动添加 事务组默认配置seata:
service:
vgroup-mapping: {"default_tx_group" : "default"}
grouplist: {"default": "127.0.0.1:8091"}
- 这一步很坑,我debug看源码发现“事务组配置”(vgroup-mapping() 和 grouplist)默认是有自己赋值的,但不知道为啥最终没有生效,应该是bug。然后我试着自己重复配置一遍vgroup-mapping 和 grouplist,就照抄一下。然后启动服务就又好了,至于什么原因导致“默认配置没有生效”暂时没有时间细找,暂时记录如下。
上面的方案,任选其一,修改后,重启客户端即可。(客户端是指你的SpringBoot项目)
成功解决- seata-server 1.5.1 服务端控制台打印 内容如下,表示 该“xxx-order”服务已经成功注册到 seata。运行稳定后,客户端控制也没有再报错了,成功。
-
遇事不决,最稳妥的当然是查官方文档了,于是我查阅了一遍,结果发现官方文档的示例代码还没更新最新的 v1.5.1使用说明(可能变动不是很大所以免了),相当于没有新版的使用说明,只有低版本的说明。
-
期间,我查还看了官网的 版本升级指南,从 v1.4.x 升级到 v1.5.x 版本没有涉及到该问题的改动。
-
于是曲线救国,去 github找到官方提供的 示例代码子项目(seata-samples) 。
-
然后看到,每一个子项目的配置文件都会有 “file.conf” 和“registry.conf”配置文件。后来得知:GitHub上的子项目均使用的 低版本配置的方式(即方案1)。
- 同时,我也下载了低版本的 seata-server-1.4.2,下面是 v1.5.1 与 v1.4.2 的conf目录对比图:
-
很显然,v1.4.2 使用的是外挂配置的方式(file.conf 和 registry.conf),实际上这种方式里面配置的很多参数我们很多都不需要改动,或者说一般人也不敢改;
-
而 v1.5.1 版本其中一项优化应该是优化掉 file.conf 和 registry.conf ,然后整合到 了 application.yml中,将大部分不会被改动的参数隐藏起来使用默认配置的方式。
-
然而,通过上面 方案2 配置与分析,我们可以得知,v1.5.1 优化是优化掉了 file.conf 和 registry.conf文件,但还不够彻底,vgroup-mapping 的默认赋值就没有生效,才导致了这个问题。
-
解决的办法就是任选其中之一解决。如果是最新版本的V1.5.1,建议使用 方案2,更快捷。其他低版本的可以使用方案1解决。
- SpringCloud Alibab-Seata 官网
- Seata 官网“快速入门”文档入口
- Seata-Server 服务端GitHub下载地址
- Seata-samples 子项目GitHub地址
- v1.5.0 - v1.5.1 seata conf配置文件地址



