在Nacos控制太上,我们在配置管理中点击新建配置,需要我们输入Data ID、Group、配置内容等等。对于Nacos配置管理,它就是通过Namespace、group、Data ID能够定位到一个应用的配置集。
在系统中,一个配置文件通常就是一个配置集,一个配置集可以包含了系统的各种配置信息。
例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。
每个配置集都可以定义一个有意义的名称,就是配置集的ID即Data ID。
配置集中包含的一个个配置内容就是配置项。它代表一个具体的可配置的参数与其值域,通常以 key=value 的形式存在。
例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR) 就是一个配置项。
配置分组是对配置集进行分组,通过一个有意义的字符串(如 Buy 或 Trade )来表示,不同的配置分组下可以有相同的配置集(Data ID)。
当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_GROUP。
配置分组的常见场景:可用于区分不同的项目或应用。
例如:学生管理系统的配置集,可以定义一个group为:STUDENT_GROUP。
命名空间(namespace)可用于进行不同环境的配置隔离。
例如可以隔离开发环境、测试环境和生产环境,因为它们的配置可能各不相同,或者是隔离不同的用户,不同的开发人员使用同一个nacos管理各自的配置,可通过namespace隔离。
不同的命名空间下,可以存在相同名称的配置分组(Group) 或 配置集。
Nacos抽象定义了Namespace、Group、Data ID的概念,具体这几个概念代表什么,取决于我们把它们看成什么,这里推荐给大家一种用法,如下图:
Namespace :代表不同环境,如开发、测试、生产环境。
Group:代表某项目,如XX医疗项目、XX电商项目
DataId:每个项目下往往有若干个工程,每个配置集(DataId)是一个工程的主配置文件
获取某配置集需要指定:
写个测试类,用于获取nacos控制台上创建的配置集:
public class QueryRemoteConfigInfo { public static void main(String[] args) throws NacosException { String address = "127.0.0.1:8848"; String dataId = "nacos-simple-config.yaml"; // 命名空间:开发环境 String namespace = "b21f780c-df9e-439c-9435-2367bb2f799b"; // 应用分组:默认 String groupId = "DEFAULT_GROUP"; Properties properties = new Properties(); properties.put("serverAddr", address); ConfigService configService = NacosFactory.createConfigService(properties); String content = configService.getConfig(dataId, groupId, 5000); System.out.println(content); } }
上边测试类将从“127.0.0.1:8848”的nacos配置中心获取配置,通过以下信息定位配置集:
namespace:b21f780c-df9e-439c-9435-2367bb2f799b
group:DEFAULT_GROUP
Data id:nacos-simple-config.yaml
namespace 的设计是 nacos 基于此做多环境以及多租户(多个用户共同使用nacos)数据(配置和服务)隔离的。
命名空间(Namespace)是用于隔离多个环境的(如开发、测试、生产),而每个应用在不同环
境的同一个配置(如数据库数据源)的值是不一样的。因此,我们应针对企业项目实际研发流程、环境进行规划。
我们现有开发、测试、生产三套环境,那么我们应该针对这三个环境分别建立三个namespace。
建立好三个命名空间后,在配置管理和服务列表下都会包含用于切换namespace的table按钮,如下图:
在编写程序获取配置集过程中没有感知到这个参数的输入,那么 nacos 统一会使用一个默认的 namespace作为输入,nacos config 会使用一个空字符串作为默认的参数来初始化,对应界面上就是public命名空间。
注意:
命名空间public是nacos的一个保留空间,如果我们需要创建属于自己的namespace,则不要和public重名,以一个实际业务场景有具体语义的名字来命名,以免带来字面上不容易区分自己是哪一个namespace。
其次,我们在项目开发中,如果需要指定namespace命名空间参数时,则一定要填写命名空间的ID,而不是名称。
举个栗子:
Nacos支持基于Namespace和Group的配置分组管理,以便用户更灵活的根据自己的需要按照环境或者应用、模块等分组管理微服务的大量配置,在配置管理中主要提供了配置历史版本、回滚、订阅者查询等核心管理能力。
点击Nacos控制台的配置管理->配置列表菜单,即可看到以下界面展示:
界面中展示了不同namespace下的配置集列表,可点击左上角的不同namespace进行切换。
右上角“+"号或点击某配置集后的 编辑 按钮可进入配置集编辑器。
Nacos支持 YAML、Properties、TEXT、JSON、XML、HTML 等常见配置格式在线编辑、语法高亮、格式校验,帮助用户高效编辑的同时大幅降低格式错误带来的风险。
Nacos支持配置标签的能力,帮助用户更好、更灵活的做到基于标签的配置分类及管理。同时支持用户对配置及其变更进行描述,方面多人或者跨团队协作管理配置。
Nacos的配置管理支持配置集内容比较能力,帮助我们校验修改的内容,降低改错带来的风险。
点击右上角的 导入配置 ,可选择nacos支持的配置文件格式进行导入文件并恢复为nacos配置集。
选择所需配置文件记录,点击克隆 按钮,在弹出的克隆对话框中,选择将配置迁移至其他namespace中。如下图红框所示。