zoukankan      html  css  js  c++  java
  • Nacos配置

     1 Nacos配置管理模型

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

     

    配置集(Data ID)

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

    配置项

    配置集中包含的一个个配置内容就是配置项。它代表一个具体的可配置的参数与其值域,通常以 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,必须指定
    代码如下:
    看懂即可不用运行。

    // 初始化配置服务,
    String serverAddr = "127.0.0.1:8848";
    String namespace = "ee247dde‐d838‐425c‐b371‐029dab26232f"; //开发环境
    String group = "DEFAULT_GROUP";                            //默认组
    String dataId = "nacos‐simple‐demo.yaml";
    Properties properties = new Properties();
    properties.put("serverAddr", serverAddr);
    properties.put("namespace", namespace);
    ConfigService configService = NacosFactory.createConfigService(properties);
    //获取配置,并输出控制台
    String content = configService.getConfig(dataId, group, 5000);
    System.out.println(content);
    

    以上代码说明将从地址为127.0.0.1:8848的nacos配置中心获取配置,通过以下信息定位配置集:
    namespace:ee247dde-d838-425c-b371-029dab26232f
    注意:namespace需要指定id。
    group:DEFAULT_GROUP
    Data Id:nacos-simple-demo.yaml

    2 命名空间管理
    2.1namespace 隔离设计
    namespace 的设计是 nacos 基于此做多环境以及多租户(多个用户共同使用nacos)数据(配置和服务)隔离的。
    从一个租户 (用户)的角度来看,如果有多套不同的环境,那么这个时候可以根据指定的环境来创建不同的
    namespce,以此来实现多环境的隔离。例如,你可能有开发,测试和生产三个不同的环境,那么使用一套
    nacos 集群可以分别建以下三个不同的 namespace。如下图所示:

     

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

     

    2.2 命名空间管理
    前面已经介绍过,命名空间(Namespace)是用于隔离多个环境的(如开发、测试、生产),而每个应用在不同环
    境的同一个配置(如数据库数据源)的值是不一样的。因此,我们应针对企业项目实际研发流程、环境进行规划。
    如某软件公司拥有开发、测试、生产三套环境,那么我们应该针对这三个环境分别建立三个namespace。

     

    建立好所有namespace后,在配置管理与服务管理模块下所有页面,都会包含用于切换namespace(环境)的tab按钮,如下图:

     

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

    // 初始化配置服务,
    String serverAddr = "127.0.0.1:8848";
    String namespace = "ee247dde‐d838‐425c‐b371‐029dab26232f"; //开发环境
    String group = "DEFAULT_GROUP";                            //默认组
    String dataId = "nacos‐simple‐demo.yaml";
    Properties properties = new Properties();
    properties.put("serverAddr", serverAddr);
    properties.put("namespace", namespace);
    ConfigService configService = NacosFactory.createConfigService(properties);
    //获取配置,并输出控制台
    String content = configService.getConfig(dataId, group, 5000);
    System.out.println(content);
    

    配置管理
    Nacos支持基于Namespace和Group的配置分组管理,以便用户更灵活的根据自己的需要按照环境或者应用、模
    块等分组管理微服务的大量配置,在配置管理中主要提供了配置历史版本、回滚、订阅者查询等核心管理能力。
    配置列表
    点击Nacos控制台的 配置管理 ->配置列表 菜单,即可看到以下界面展示:

    界面中展示了不同namespace下的配置集列表,可点击左上角的不同namespace进行切换。右上角“+"号或点击某配置集后的 编辑 按钮可进入配置集编辑器。
    多配置格式编辑器
    Nacos支持 YAML、Properties、TEXT、JSON、XML、HTML 等常见配置格式在线编辑、语法高亮、格式校验,帮
    助用户高效编辑的同时大幅降低格式错误带来的风险。
    Nacos支持配置标签的能力,帮助用户更好、更灵活的做到基于标签的配置分类及管理。同时支持用户对配置及其
    变更进行描述,方面多人或者跨团队协作管理配置。

    编辑DIFF
    Nacos支持编辑DIFF能力,帮助用户校验修改内容,降低改错带来的风险。

    配置集导出
    勾选若干配置集,点击 导出选中的配置 ,可获得一个压缩包:

     压缩包内,包含了选中配置集所转换的配置文件:

    配置集导入
    点击右上角的 导入配置 ,可选择导出的压缩包文件,将压缩包内的文件恢复为nacos配置集。

    历史版本
    Nacos通过提供配置版本管理及其一键回滚能力,帮助用户改错配置的时候能够快速恢复,降低微服务系统在配置管理上的可用性风险

     

     点击回滚:

     

     监听查询
    Nacos提供配置订阅者即监听者查询能力,同时提供客户端当前配置的MD5校验值,以便帮助用户更好的检查配置变更是否推送到 Client 端。

     

     

     

    3 登录管理
    Nacos当前版本支持简单的登录功能,默认用户名/密码为: nacos/nacos 。
    修改默认用户名/密码方法
    1. 生成加密密码
    在入门程序中加入如下以来:

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring‐security‐core</artifactId>
        <version>5.1.4.RELEASE</version>
    </dependency>
    

    编写PasswordEncoderUtil类,生成加密后的密码,采用BCrypt加密方法在每次生成密码时会加随机盐,所以生成密码每次可能不一样。

    public class PasswordEncoderUtil {
        public static void main(String[] args) {
            System.out.println(new BCryptPasswordEncoder().encode("123"));
        }
    }
    

    1. 创建用户名或者密码的时候,用指定用户名密码即可。
    将上边程序输出的密码更新到数据库。

    INSERT INTO users (username, password, enabled) VALUES ('nacos1','$2a$10$SmtL5C6Gp2sLjBrhrx1vj.dJAbJLa4FiJYZsBb921/wfvKAmxKWyu', TRUE);
    INSERT INTO roles (username, role) VALUES ('nacos1''ROLE_ADMIN');

    关闭登录功能
    由于部分公司自己开发控制台,不希望被nacos的安全filter拦截。因此nacos支持定制关闭登录功能找到配置文件${nacoshome}/conf/application.properties , 替换以下内容即可。

  • 相关阅读:
    HDU 5213 分块 容斥
    HDU 2298 三分
    HDU 5144 三分
    HDU 5145 分块 莫队
    HDU 3938 并查集
    HDU 3926 并查集 图同构简单判断 STL
    POJ 2431 优先队列
    HDU 1811 拓扑排序 并查集
    HDU 2685 GCD推导
    HDU 4496 并查集 逆向思维
  • 原文地址:https://www.cnblogs.com/dalianpai/p/12766847.html
Copyright © 2011-2022 走看看