Seata事务分组的正确实践
ShiJh Lv3

关于Seata部署和配置中遇到的摸棱两可的场景

Seata事务分组的正确实践

seata的文档和github上的案例着实有点坑人了!

server端配置

server端根据文档中的 高可用部署 进行配置,其中修改config.txt 中的 service.vgroupMapping.my_test_tx_group 是一个错误的配置项,具体在github中 seata/seata-samples中的 springcloud-nacos下的文档中说明了 高版本的不可使用下划线 需使用上划线。(文档中却不说明)

my_test_tx_group 其实是一个分组名,可以自行决定!

seata通过该分组名找到 seata-server 对应的集群名称,然后在找到该集群的服务列表。

因此在配置config.txtservice.vgroupMapping.xxxx后面的值为集群名称。在使用nacos进行注册时,该集群名称在registry.conf中的 nacos.cluster 决定。因此config.txt中的 service.xxxx.grouplist 是可以不用配置的(仅在文件模式下有效)。

client端配置

seata-samples 有太多老样例没更新了,根本不能作为参考。

application.yml 中可以配置 nacos 注册中心和配置中心的地址及参数,最重要的是配置 seata.tx-service-group该项对应了 server 端中的 service.vgroupMapping.xxxx 因此在同一个组内的微服务需要配置相同的分组名。

1.4.2 clinet端默认在注册中心中找 SEATA_GROUP 下的seata-server集群,因此部署server端时需要更改nacos配置下的 group 为 SEATA_GROUP

值得注意的是 spring.cloud.alibaba.seata.tx-service-group 也是配置分组名的选项 显然与seata中的选项重复了! 在两年前的官方样例和目前官方文档之事务分组章节中使用的是改项,个人认为这是一个过时的选项 可以不用管它

 评论