nacos命名空间,组和集群的隔离。

背景:通过nacos多人协同本地开发时,服务的调用到本地,而不会调用到服务器。配置的继承和隔离。

Naocs配置和开发使用技巧

  1. Nacos作为配置管理和服务调用中心,集中管理配置,方便各个服务调用和发现。
  2. Bootstrap.yml是Springboot项目引入nacos配置的核心文件。本文以nacos1.4.2为例子。

现在对bootstrap.yml配置进行说明,以及日常配置和服务调用服务使用说明。

Nacos中分为三层隔离,分别是命名空间(namespace)隔离、组(group)隔离、集群(cluster-name)隔离。命名空间是绝对隔离,配置和服务都不可调用。组隔离是同一命名空间下,不同组配置可以共享和继承,但是服务不能跨组调用。而集群隔离,是可以让同一命名空间,同一个分组下,同一集群内服务隔离或不隔离。

这里重点说明一下集群隔离,该方面资料网上较少。

集群隔离,主要解决的痛点是:

用nacos多人协同开发几个相同的微服务模块时,每个开发人员希望自己本地启动的微服务,会调用到自己本地的另外一个微服务。而公共的微服务还是调用远程的服务器上的微服务。

举个例子,现在有四个微服务,a1,a2,b1,b2,b3。测试环境服务器自动构建了四个微服务,并且正常运行。现在开发人员A和开发人员B,都在本地需要调试开发a1和a2服务,而a1,a2必须依赖b1,b2,b3服务才能启动,并且a1和a2服务需要通过nacos的服务名相互调用本地的a1和a2。

  1. 如果不做处理,开发人员A,B都会在nacos上注册a1,a2,加上服务器注册的。会有三个服务实例,本地a1调用a2时,会调用到服务器或者其他人的a2,不适合本地调试。
  2. 如果修改bootstrap.yml中的namespace的话,需要每个开发人员建立一个命名空间,并且需要每个命名空间都要再运行不用开发的b1,b2,b3等基础服务。
  3. 或者本地开发人员临时修改需要彼此调用的服务的服务名,但是要对应修改feign中的调用的服务编码,有的feign是打包成sdk工具依赖,不便修改。

        办法如下:

                     通过引入如下两个配置:

spring.cloud.nacos.discovery. cluster-name=zzc #指定服务集群

Bservice.ribbon.NFLoadBalancerRuleClassName=com.alibaba.cloud.nacos.ribbon.NacosRule

#Bservice是要去调用的服务名,

Nacos使用过程中配置部分说明:

nacos命名空间,组和集群的隔离。_第1张图片

继承的扩展配置组是DEFAULT_GROUP,而当前项目配置config所在的组是DEFAULT_GROUP_zzc。因此启动项目时,会去获取DEFAULT_GROUP组下,配置文件名为继承的扩展配置文件名的配置(xxx-base-config.yml),再去获取DEFAULT_GROUP_zzc组下,配置文件名为(服务名.yml)的配置文件。最后再加上本地配置文件为最终的配置文件。优先级时,远程覆盖本地的,自己组的配置覆盖继承组的配置。

而且注意:DEFAULT_GROUP_zzc组配置必须在extension-configs[0]的下面,否则。继承组DEFAULT_GROUP会被覆盖掉。extension-configs[n],其中n代表优先级,n越大,优先级越高。

nacos命名空间,组和集群的隔离。_第2张图片

 

多网卡情况下,注册到nacos上的ip可能不是正确的Ip,需要在discovery中指定注册的IP

Discovery.group可以和config.group不是同一个组。这样的好处就是配置和服务的单独隔离

nacos命名空间,组和集群的隔离。_第3张图片

Bootstrap.yml配置的优先级高于本地的application.yml配置。所以在有需要指定profile.active=dev时,必须引入bootstrap.yml。如下:

Bootstrap.yml 基础公共配置,必须存在,用于指定profile.active

Bootstrap-dev.yml  本地开发用

Bootstrap-prod.yml  生产环境用

Bootstrap-test.yml  测试环境自动构建用

你可能感兴趣的:(java,springboot,java,spring,boot,spring,cloud,nacos,后端)