Nacos配置中心规范

版本选择

毕业版本依赖关系(推荐使用)

image.png

Namespace

Nacos引入了命名空间(Namespace)的概念来进行多环境配置和服务的管理及隔离
Namespace也是官方推荐的多环境支持方案。

如何进行配置和服务的管理、隔离(Group)

这里的group就是Namespace的概念,将服务和配置纳入相同的Namespace进行管理
不同Namespace下的服务和配置之间就隔离开来。

创建和获取NamespaceID

NamespaceId值是在配置文件配置时必须要填入的配置项,所以需要我们先创建Namespace和Id,步骤如下:
nacos 的控制台左边功能栏看到有一个命名空间的功能,点击就可以看到新建命名空间 的按钮。
新建成功后,可以在命名空间列表中查看到你所创建的Namespace和他生成的ID值。

以下展示了命名空间的创建

Namespace实施方案

  1. 面向一个租户

从一个租户(用户)的角度来看,如果有多套不同的环境,那么这个时候可以根据指定的环境来创建不同的 namespce,以此来实现多环境的隔离。
例如,你可能有dev,test和prod三个不同的环境,那么使用一套 nacos 集群可以分别建以下三个不同的 namespace。如下图所示:

方案1

通过定义不同的环境,不同环境的项目在不同的Namespace下进行管理,不同环境之间通过Namespace进行隔离。
当多个项目同时使用该Nacos集群时,还可以通过Group进行Namespace内的细化分组。
这里以Namespace:dev为例,在Namespace中通过不同Group进行同一环境中不同项目的再分类。

方案2内部Group分组

代码示例

Namespace下新建配置文件

这里假设有 nacos-namespace-onenacos-namespace-two 两个项目
启动Nacos-Server,进入Nacos控制台,切换到Namespace:dev界面,新建配置文件

  • DataId:nacos-namespace-one-dev.yml
  • Group:namespace-one
  • 配置格式:YAML
  • 配置内容:
nacos: 
     config: 项目:nacos-namespace-one,Namespace:dev
  • 继续新建配置文件
  • DataId:nacos-namespace-two-dev.yml
  • Group:namespace-two
  • 配置格式:YAML
  • 配置内容:
nacos: 
    config: 项目:nacos-namespace-two,Namespace:dev

注意检查DataId是否正确、group、配置内容与环境是否匹配

以下NamespaceId均来自创建Namespace时生成的Id,在控制台命名空间页面中可以查看

创建dev环境配置文件 bootstrap.yml

server:
  port: 9911
spring:
  application:
    name: nacos-namespace-one
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: edbd013b-b178-44f7-8caa-e73071e49c4d
        group: namespace-one
      config:
        server-addr: 127.0.0.1:8848
        prefix: ${spring.application.name}
        file-extension: yml
        namespace: edbd013b-b178-44f7-8caa-e73071e49c4d
        group: namespace-one

创建test环境配置文件 bootstrap.yml

server:
  port: 9912
spring:
  application:
    name: nacos-namespace-one
  profiles:
    active: test
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: 0133bd1e-25c3-4985-96ed-a4e34efdea2e
        group: namespace-one
      config:
        server-addr: 127.0.0.1:8848
        prefix: ${spring.application.name}
        file-extension: yml
        namespace: 0133bd1e-25c3-4985-96ed-a4e34efdea2e
        group: namespace-one

** nacos-namespace-two** 项目重复以上步骤

image

尝试访问接口来获取配置信息,验证是否可以读取相应环境配置

访问127.0.0.1:9911/getValue,返回:项目:nacos-namespace-one,Namespace:dev
访问127.0.0.1:9912/getValue,返回:项目:nacos-namespace-one,Namespace:test
访问127.0.0.1:9921/getValue,返回:项目:nacos-namespace-two,Namespace:dev
访问127.0.0.1:9922/getValue,返回:项目:nacos-namespace-two,Namespace:test

总结:通过Namespace来隔离不同的环境(dev\test),在具体的环境Namespace中通过Group来管理不同的项目

共享配置

    extension-configs:
      - data-id: shareconfig3.yml
        group: share3_group
        refresh: true
      - data-id: shareconfig3.yml
        group: share4_group
        refresh: true
    shared-configs:
      - data-id: shareconfig1.yml
        refresh: true
      - data-id: shareconfig2.yml
        refresh: true

介绍

从图上可以看出 :
spring.cloud.nacos.config.extension-configs[n].data-id 其中 n 的值越大,优先级越高,因此会走group=share4_group的配置。
spring.cloud.nacos.config.shared-configs[n].data-id默认跟上面一样的逻辑。

不同方式配置加载优先级

Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。

A: 通过 spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置
B: 通过 spring.cloud.nacos.config.extension-configs[n].data-id 的方式支持多个扩展 Data Id 的配置
C: 通过内部相关规则(spring.cloud.nacos.config.prefix、spring.cloud.nacos.config.file-extension、spring.cloud.nacos.config.group)自动生成相关的 Data Id 配置

当三种方式共同使用时,他们的一个优先级关系是:A < B < C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值