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 , 替换以下内容即可。

  • 相关阅读:
    poj1743Musical Theme
    poj1743Musical Theme
    poj2774最长公共子序列(后缀数组)
    病毒侵袭
    阿狸的打字机(AC自动机+fail树)
    阿狸的打字机(AC自动机+fail树)
    bzoj3172 AC自动机+fail树
    HDU2222(AC自动机)
    HDU2222(AC自动机)
    _itoa进制转换
  • 原文地址:https://www.cnblogs.com/dalianpai/p/12766847.html
Copyright © 2011-2022 走看看