• Nacos配置中心功能


    Nacos的配置管理模型

    对于Nacos配置管理,通过Namespace、group、Data ID能够定位到一个配置集。

    img

    命名空间(Namespace)

    命名空间(namespace)可用于进行不同环境的配置隔离。例如可以隔离开发环境、测试环境和生产环境,因为它们的配置可能各不相同,或者是隔离不同的用户,不同的开发人员使用同一个nacos管理各自的配置,可通过namespace隔离。不同的命名空间下,可以存在相同名称的配置分组(Group) 或 配置集。

    配置分组(Group)

    配置分组是对配置集进行分组,通过一个有意义的字符串(如 Buy 或 Trade )来表示,不同的配置分组下可以有相同的配置集(Data ID)。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:可用于区分不同的项目或应用,例如:学生管理系统的配置集可以定义一个group为:STUDENT_GROUP。

    配置集(Data ID)

    在系统中,一个配置文件通常就是一个配置集,一个配置集可以包含了系统的各种配置信息,例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。每个配置集都可以定义一个有意义的名称,就是配置集的ID即DataID。

    配置项

    配置集中包含的一个个配置内容就是配置项。它代表一个具体的可配置的参数与其值域,通常以 key=value 的形式存在。例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR) 就是一个配置项。

    一个最佳实践

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

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

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

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

    img

    下面演示一个使用 spring boot 来获取配置的列子。

    step1:添加Nacos的配置

    nacos:
      config:
        access-key: 127.0.0.1:8848
        namespace: 6f97a206-ce19-44c2-85be-c601170d306e  -- 不配置的话默认是public
    

    image-20210714155922495

    上面是在配置中心上已经创建的namespace,代码中使用的是tpag这个空间。

    step2:添加@NacosPropertySource注解

    @Configuration
    @NacosPropertySource(groupId = "xxl-job", dataId = "config-file", autoRefreshed = true)
    public class NacosConfig {
    }
    

    上面的dataId必须填写,groupId不填写的默认。

    image-20210714160255616

    step3:使用配置

    @RestController("/nacos")
    public class NacosConfigCenter {
    
        @NacosValue(value = "${name:自由之路}", autoRefreshed = true)
        private String name;
    
        @GetMapping("/getName")
        public String getName() {
            return name;
        }
    }
    

    命名空间管理

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

    多环境的角度

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

    img

    从多租户的角度

    从多个租户(用户)的角度来看,每个租户(用户)可能会有自己的 namespace,每个租户(用户)的配置数据以及注册的服务数据都会归属到自己的 namespace 下,以此来实现多租户间的数据隔离。例如超级管理员分配了三个租户,分别为张三、李四和王五。分配好了之后,各租户用自己的账户名和密码登录后,创建自己的命名空间。如下图所示:

    img

    可以通过Nacos控制台上面的“命名空间”菜单来进行命名空间的管理。

    image-20210714163854643

    配置管理

    通过控制台的“配置管理”菜单可以很方便的进行配置管理。

    image-20210714170059146

    这里面主要说下“监听查询”这个功能。

    这个功能可以查询到有哪些节点正在监听配置文件,并且通过MD5值来判断,节点监听到的文件是不是最新的。

    image-20210714175105102

    参考

    人生的主旋律其实是苦难,快乐才是稀缺资源。在困难中寻找快乐,才显得珍贵~
  • 相关阅读:
    java程序高CPU,如何直接定位(linux系统下命令行操作)
    HashMap源码解读(jdk1.8)
    mysql索引原理
    redis常见问题
    Bitmap算法
    list遍历时删除的坑
    接口和抽象类有什么区别?各在什么场景下使用?
    记录BigInteger犯过的一个错误
    CentOS7切换源
    map遍历性能记录
  • 原文地址:https://www.cnblogs.com/54chensongxia/p/15012177.html
Copyright © 2020-2023  润新知