四. Nacos配置管理基础应用

发布于 2021-06-25  157 次阅读


Nacos配置管理模型

对于Nacos配置管理,通过Namespace、Group、DataId能够定位到一个配置集

命名空间管理

Namespace隔离设计

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

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

PS:单个用户使用Nacos Client,可通过不同的Namespace来做不同环境下的配置/服务与数据隔离

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

PS:多租户只是提出概念,实际还未实现

配置管理

配置列表

在配置列表中,可以对配置文件进行增删改查,并可以查看配置文件的历史版本与进行监听查询。同时还可对配置文件进行导出与导入,也可以将一个命名空间内的配置文件克隆到另一命名空间~

历史版本

在历史版本中可以通过Data ID与Group进行查询,查看配置文件修改详情并进行回滚操作

PS:此详情为修改前的详情,而非修改后的详情

监听查询

监听查询中可以针对【配置】或【IP】两种方式进行查询,查看某一配置文件或是某一IP地址对Nacos的监听情况

在上个项目的基础上新加代码测试:

// Listen Config
	err=client.ListenConfig(vo.ConfigParam{
		DataId: "nacos-simple-demo.yaml",
		Group: "DEFAULT_GROUP",
		// 当配置有变化时,获取通知
		OnChange: func(namespace, group, dataId, data string) {
			fmt.Printf("config changed group:%v,dataId:%v,content:%v\n",group,dataId,data)
		},
	})
	for {
		time.Sleep(time.Minute)
	}

(2) 启动程序之后在管理配置页面修改配置如下:

日志如下:

GetConfig,config :common:
config1: somethingIsNeverChanged
config changed group:DEFAULT_GROUP,dataId:nacos-simple-demo.yaml,content:common:
config1: somethingIsNeverChangedAnyway

登陆管理

Nacos当前版本支持简单的登录功能,默认用户名/密码为: nacos/nacos 。

4.4.1 修改默认用户名/密码的方法

(1) 生成加密密码

项目中加入依赖

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

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

package net.zhi365;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

/**
 * @author Xin.li
 * @date 2021-01-09 14:55
 */
public class PasswordEncoderUtil {
    public static void main(String[] args) {
        System.out.println(new BCryptPasswordEncoder().encode("Ab@123456"));
    }
}
# 复制密码
$2a$10$FjBvaraTV5ZpV0RotFJ0reO3xZg7/BzFf49Oa5ROfFqeyymf37/g2

(3) 新增用户或更新数据库密码---不好用,待解~

新增用户

INSERT INTO users (username, password, enabled) VALUES ('leolee',
'$2a$10$.63r.W.Ug7aXZAOxIvVMOefbADvh4Un04W85FHM4EqicmgjNOl58S', TRUE);
INSERT INTO roles (username, role) VALUES ('leolee', 'ROLE_ADMIN');

也可通过登陆Nacos页面新建用户、修改密码