1. Nacos配置管理模型

在Nacos控制太上,我们在配置管理中点击新建配置,需要我们输入Data ID、Group、配置内容等等。对于Nacos配置管理,它就是通过Namespace、group、Data ID能够定位到一个应用的配置集。


Nacos配置管理的数据模型


配置集(Data ID)

在系统中,一个配置文件通常就是一个配置集,一个配置集可以包含了系统的各种配置信息。

例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。

每个配置集都可以定义一个有意义的名称,就是配置集的ID即Data ID。


配置项

配置集中包含的一个个配置内容就是配置项。它代表一个具体的可配置的参数与其值域,通常以 key=value 的形式存在。

例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR) 就是一个配置项。


配置分组(Group)

配置分组是对配置集进行分组,通过一个有意义的字符串(如 Buy 或 Trade )来表示,不同的配置分组下可以有相同的配置集(Data ID)。

当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP

配置分组的常见场景:可用于区分不同的项目或应用。

例如:学生管理系统的配置集,可以定义一个group为:STUDENT_GROUP。


命名空间(Namespace)

命名空间(namespace)可用于进行不同环境的配置隔离。

例如可以隔离开发环境、测试环境和生产环境,因为它们的配置可能各不相同,或者是隔离不同的用户,不同的开发人员使用同一个nacos管理各自的配置,可通过namespace隔离。

不同的命名空间下,可以存在相同名称的配置分组(Group) 或 配置集。


最佳实践

Nacos抽象定义了Namespace、Group、Data ID的概念,具体这几个概念代表什么,取决于我们把它们看成什么,这里推荐给大家一种用法,如下图:

Namespace :代表不同环境,如开发、测试、生产环境。

Group:代表某项目,如XX医疗项目、XX电商项目

DataId:每个项目下往往有若干个工程,每个配置集(DataId)是一个工程的主配置文件

获取某配置集需要指定:

  1. nacos服务地址,必须指定
  2. namespace,如不指定默认public
  3. group,如不指定默认 DEFAULT_GROUP
  4. 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


2.Nacos命名空间管理

2.1 命名空间的隔离设计

namespace 的设计是 nacos 基于此做多环境以及多租户(多个用户共同使用nacos)数据(配置和服务)隔离的。

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

  • 从多个租户 (用户)的角度来看,每个租户(用户)可能会有自己的 namespace,每个租户(用户)的配置数据以及注册的服务数据都会归属到自己的 namespace 下,以此来实现多租户间的数据隔离。
  • 进入用户管理,我们创建三个租户,依次为:张三、李四、王五。

  • 分配好了之后,各租户用自己的账户名和密码登录后,创建自己的命名空间

  • 在nacos控制台上,进入角色管理,将角色与用户绑定:

  • 进入权限管理,将角色与资源绑定:

  • 通过创建三个租户、命名空间、权限隔离,最终将形成如下图所示的隔离效果:

  • 如下图所示,在不同租户下的命名空间里可以创建属于自己的配置列表。


2.2 命名空间管理

命名空间(Namespace)是用于隔离多个环境的(如开发、测试、生产),而每个应用在不同环
境的同一个配置(如数据库数据源)的值是不一样的。因此,我们应针对企业项目实际研发流程、环境进行规划。

我们现有开发、测试、生产三套环境,那么我们应该针对这三个环境分别建立三个namespace。

建立好三个命名空间后,在配置管理和服务列表下都会包含用于切换namespace的table按钮,如下图:

在编写程序获取配置集过程中没有感知到这个参数的输入,那么 nacos 统一会使用一个默认的 namespace作为输入,nacos config 会使用一个空字符串作为默认的参数来初始化,对应界面上就是public命名空间。

注意:

命名空间public是nacos的一个保留空间,如果我们需要创建属于自己的namespace,则不要和public重名,以一个实际业务场景有具体语义的名字来命名,以免带来字面上不容易区分自己是哪一个namespace。

其次,我们在项目开发中,如果需要指定namespace命名空间参数时,则一定要填写命名空间的ID,而不是名称。

举个栗子:


3. Nacos的配置管理

Nacos支持基于Namespace和Group的配置分组管理,以便用户更灵活的根据自己的需要按照环境或者应用、模块等分组管理微服务的大量配置,在配置管理中主要提供了配置历史版本、回滚、订阅者查询等核心管理能力。

3.1 配置列表

点击Nacos控制台的配置管理->配置列表菜单,即可看到以下界面展示:

界面中展示了不同namespace下的配置集列表,可点击左上角的不同namespace进行切换。
右上角“+"号或点击某配置集后的 编辑 按钮可进入配置集编辑器。

  • 多配置格式编辑器

Nacos支持 YAML、Properties、TEXT、JSON、XML、HTML 等常见配置格式在线编辑、语法高亮、格式校验,帮助用户高效编辑的同时大幅降低格式错误带来的风险。

Nacos支持配置标签的能力,帮助用户更好、更灵活的做到基于标签的配置分类及管理。同时支持用户对配置及其变更进行描述,方面多人或者跨团队协作管理配置。

  • 内容比较

Nacos的配置管理支持配置集内容比较能力,帮助我们校验修改的内容,降低改错带来的风险。

  •  导出

  •  导入配置

点击右上角的 导入配置 ,可选择nacos支持的配置文件格式进行导入文件并恢复为nacos配置集。

  • 克隆配置集

选择所需配置文件记录,点击克隆 按钮,在弹出的克隆对话框中,选择将配置迁移至其他namespace中。如下图红框所示。

Nacos配置管理基础应用相关推荐

  1. Nacos 配置管理

    一.什么是配置中心 1.什么是配置 应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数.启动参数等. 配置主要有以下几个特点: (1).配 ...

  2. 微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关

    微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关 1. 微服务简介 1.1 服务架构演变 1.2 SpringCloud ...

  3. springboot nacos配置中心_SpringBoot开发案例之Nacos配置管理中心

    前言 在开发过程中,通常我们会配置一些参数来实现某些功能,比如是否开启某项服务,告警邮件配置等等.一般会通过硬编码.配置文件或者数据库的形式实现. 那么问题来了,如何更加优雅的实现?欢迎来到 Naco ...

  4. Nacos配置管理模型

    对于Nacos配置管理,通过Namespace.group.Data ID能够定位到一个配置集. 配置集(Data ID) 在系统中,一个配置文件通常就是一个配置集,一个配置集可以包含了系统的各种配置 ...

  5. Nacos配置管理-微服务配置拉取

    从微服务拉取配置 微服务要拉取nacos中管理的配置,并且与本地的application.yml配置合并,才能完成项目启动. 但如果尚未读取application.yml,又如何得知nacos地址呢? ...

  6. Nacos配置管理-Nacos实现配置管理

    Nacos配置管理 Nacos除了可以做注册中心,同样可以做配置管理来使用. 统一配置管理 当微服务部署的实例越来越多,达到数十.数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错.我们需要一种统 ...

  7. nacos配置中心使用_SpringBoot开发案例Nacos配置管理中心

    前言 在开发过程中,通常我们会配置一些参数来实现某些功能,比如是否开启某项服务,告警邮件配置等等.一般会通过硬编码.配置文件或者数据库的形式实现. 那么问题来了,如何更加优雅的实现?欢迎来到 Naco ...

  8. java微服务Nacos配置管理

    介绍Nacos配置管理 Nacos 提供了动态配置服务,能让我们可以实时进行服务应用的配置变更,让配置管理变得更加高效和快捷.它基于 key/value 方式存储应用配置和其他元数据信息,为分布式系统 ...

  9. Nacos(第一篇)_Springboot2.x+Nacos配置管理中心

    前言 在开发过程中,我们通常会配置一些参数来实现某些功能,如:开启某些服务,邮箱通知,短信通知等:一般在这个时候,我们都是通过硬编码来实现.配置文件或数据库实现. Nacos 配置管理 Nacos 是 ...

  10. SpringCloud2——Nacos配置管理

    个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来. 本篇励志:三人行,必有我师焉. 本项目基于B站黑马程序员Java<SpringCloud微服务技术栈>,S ...

最新文章

  1. 程序员不要去这样的公司
  2. redis和memecache有什么区别?
  3. 透过源码详解Spring Security 初始化流程
  4. 2018年DApp分析 | 链塔区块链产业年鉴精选
  5. flutter 组件IgnorePointer
  6. 与Oracle配套组件,oracle 组件和体系结构
  7. [JSP暑假实训] 二.JSP网站创建及Servlet实现注册表单提交、计算器运算
  8. matlab 去除pdf文档水印
  9. python基础学习_35岁零基础学习Python编程是否能学得会并用得上
  10. 石牌村中的美好 ...
  11. Java+Selenium+Testng自动化测试学习(三)— 断言
  12. 剑指offer 变态跳台阶 特别sb的一道题
  13. Apache Flink 漫谈系列(06) - 流表对偶(duality)性
  14. 如何去除图片连接的边框线
  15. ConstraintLayout 属性详解 和Chain的使用
  16. ios学习路线图_iOS开发学习路线 +技巧整理
  17. 衣带渐宽终不悔,为“指针”消得人憔悴(二)
  18. c/s模型和b/s模型
  19. PC传输图片到Hololens
  20. 时区、时间戳、日期、夏令时、冬令时

热门文章

  1. 线程池的实现原理分析
  2. zuul网关,springsecurity认证中心 和 Swagger2 整合遇到的问题
  3. Java并发之Condition接口
  4. 1.Java集合-HashMap实现原理及源码分析
  5. Docker container 集装箱说明
  6. 一起谈.NET技术,在ASP.NET中自动合并小图片并使用CSS Sprite显示出来
  7. Word 2010—样式集
  8. 01_项目需求与实体分析(servlet+java bean+jsp的商城教程)
  9. View#post与Handler#post的区别,以及导致的内存泄漏分析
  10. HashTable源码