Nacos学习(五):关于Nacos的endpoint、命名空间、Group和DataId隔离性的规划

mac2024-06-05  68

对于现实开发,存在以下几种环境隔离的要求: 1、开发环境、测试环境和生产环境需要隔离,这种隔离一般采用物理隔离;例如,生产环境运行的设备和开发环境运行的设备是不同的; 2、不同项目需要隔离,这种隔离可以采用软隔离;即可以运行在同一设备上,通过某个字段来区分; 3、同一项目,不同模块需要隔离;这个可以采用软件隔离; 上面的1,可以采用Nacos的endpoint做物理隔离; 上面的2,可以采用Nacos的命名空间做软隔离; 上面的3,可以采用Nacos的Group做软隔离;

举个例子,hhao公司有一个erp项目,Maven座标假定为: 服务端:     <groupId>com.hhao.erp</groupId>     <artifactId>erp-server</artifactId> 客户端:     <groupId>com.hhao.erp</groupId>     <artifactId>erp-client</artifactId>

其配置中心隔离划分如下: 1、开发环境采用的Nacos配置中心服务器: 192.168.20.30:8848 192.168.20.31:8848 192.168.20.32:8848 2、上线环境采用的Nacos配置中心服务器: 192.168.10.10:8848 192.168.10.11:8848 192.168.10.12:8848

一、Nacos的地址服务器设置如下: Nacos地址服务器地址如下:192.168.20.6:8080(注:一般开发与生产用的地址服务器也要分开,这里为简单起见,就不做分离) 添加开发环境下的Nacos配置中心服务器: 192.168.20.6:8080/nacos/v1/as/nodes?ips=192.168.20.30:8848,192.168.20.31:8848,192.168.20.32:8848&product=01:com.hhao.erp&cluster=dev:01 nacos-address获取地址列表命令: 192.168.20.6:8080/nacos/serverlist?product=01:com.hhao.erp&cluster=dev:01

添加生产环境下的Nacos配置中心服务器: 192.168.20.6:8080/nacos/v1/as/nodes?ips=192.168.10.10:8848,192.168.10.11:8848,192.168.10.12:8848&product=01:com.hhao.erp&cluster=pro:02 nacos-address获取地址列表命令: 192.168.20.6:8080/nacos/serverlist?product=01:com.hhao.erp&cluster=pro:02

其中, ips:即Necos支持的配置中心的服务器地址; product:建议格式为"用户id:groupid",用户id应对多用户环境;groupid用于区分不同项目; cluster:建议格式为"环境:机房编号" 由此,系统从地址服务器就可以获取到不同环境下的Nacos配置;这种配置是物理隔离的; 这里需要注意: 1、生产环境的地址服务器与开发环境的地址服务器要分开设置;这也是唯一有藕合的部份;当然,还有一种法,基于nginx实现,利用nginx的geo模块实现不同网段不同划分; 2、目前到1.1.4版,地址服务器功能还不是完全完善。虽然nacos-address支持product和cluster参数,但是nacos-client却无法有效对这两个参数进行解析,只能访问默认的product=nacos和cluster=serverlist,因此实际上,nacos-client只能从nacos-address获取product=nacos\cluster=serverlist的地址列表;不过,可以自己调整一个nacos-client使它支持,否则目前只能麻烦一些,分别设置地址服务器;

二、命名空间设置如下: 命名空间直接按项目的名称设置,建议格式:"用户id:groupid:版本",例如:"01:com.hhao.erp:1"。这里的版本指配置属性的版本,不指项目的版本。因为如果连续几个项目版本的配置属性都向下兼容的话,配置属性的版本就不用改动,除非配置属性不再向下兼容,则起用新的版本。

三、Group设置: Group建议格式如下:"artifactId",例如:"erp-server"

四、DataId设置: ${prefix}-${spring.profiles.active}.${file-extension} prefix默认为 spring.application.name的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。 spring.profiles.active 即为当前环境对应的profile,但是,不建议使用,原因在后面会说明。 注意,当activeprofile为空时,对应的连接符-也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension} file-extension为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。 

 

 

最新回复(0)