这里多了一层获取事务分组到映射集群的配置。这样设计后,事务分组可以作为资源的逻辑隔离单位,出现某集群故障时可以快速failover,只切换对应分组,可以把故障缩减到服务级别,但前提也是你有足够server集群。
seata注册、配置中心类型分为两大类:
registry.conf
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "file" ---------------> 使用file作为注册中心
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "file" ---------------> 使用file作为配置中心
file {
name = "file.conf"
}
}
registry.conf
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "file" ---------------> 使用file作为注册中心
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "file" ---------------> 使用file作为配置中心
file {
name = "file.conf" ---------------> 配置参数存储文件
}
}
file.conf
service {
vgroupMapping.my_test_tx_group = "default"
default.grouplist = "127.0.0.1:8091"
}
application.properties
seata.tx-service-group=my_test_tx_group ---------------> 事务分组配置(在v1.5之后默认值为default_tx_group)
registry.conf
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos" ---------------> 使用nacos作为注册中心
nacos {
application = "seata-server" ---------------> 指定注册至nacos注册中心的服务名
group = "SEATA_GROUP" ---------------> 指定注册至nacos注册中心的分组名
serverAddr = "localhost" ---------------> nacos注册中心IP:端口
namespace = "" ---------------> nacos命名空间id,""为nacos保留public空间控件,用户勿配置namespace = "public"
cluster = "default" ---------------> 指定注册至nacos注册中心的集群名
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos" ------------> 使用nacos作为配置中心
nacos {
serverAddr = "localhost" ---------------> nacos注册中心IP:端口
namespace = ""
group = "SEATA_GROUP" ---------------> nacos配置中心的分组名
dataId = "seataServer.properties" ---------------> nacos配置中心的配置ID
}
}
配置中心配置项
在Seata Server的安装目录conf下README-zh.md
或README.md
文件中介绍了Seata需要的常见脚本URL链接,包括三类:客户端的配置和SQL、SeataServer端部署所需SQL和脚本、配置中心配置项模板和脚本。
其中在script/config-center下有文件和目录如下:
config.txt模板中的配置项,需要根据实际情况筛选和修改。 然后配置到配置中心:即可参照README.md使用帮助通过脚本推送至配置中心。也将config.txt中的内容人工拷贝至配置中心(例如通过nacos配置中心的Web页面)。 配置完毕后需要检查结果是否正确。
注册至注册中心 启动seata-server注册至nacos注册中心,查看nacos控制台服务列表确认是否成功
seata.tx-service-group=my_test_tx_group ---------------> 事务分组配置(在v1.5之后默认值为default_tx_group)
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos" ---------------> 从nacos获取TC服务
nacos {
serverAddr = "localhost"
namespace = ""
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos" ---------------> 使用nacos作为配置中心
nacos {
serverAddr = "localhost"
namespace = ""
}
}
application.properties
seata.tx-service-group=my_test_tx_group ---------------> 事务分组配置(在v1.5之后默认值为default_tx_group)
seata.service.vgroup-mapping.my_test_tx_group=default ---------------> 指定事务分组至集群映射关系(等号右侧的集群名需要与Seata-server注册到Nacos的cluster保持一致)
seata.registry.type=nacos ---------------> 使用nacos作为注册中心
seata.registry.nacos.server-addr=nacos注册中心IP:端口
seata.registry.nacos.application=seata-server ---------------> Seata服务名(应与seata-server实际注册的服务名一致)
seata.registry.nacos.group=SEATA_GROUP ---------------> Seata分组名(应与seata-server实际注册的分组名一致)
另外:若Client不通过Nacos获取seata-server服务信息,而是直接指定seata-server服务端节点的IP和端口信息,则可将以上application.properties中涉及nacos几个配置改为如两个配置:
seata.registry.type=file ----> 不推荐在正式环境使用
seata.service.grouplist.cluster_beijing=127.0.0.1:8091 ----> vgroup-mapping(服务端cluster)各个seata-server节点信息
注:serverAddr和namespace与Server端一致,clusterName与Server端cluster一致