四. Nacos配置管理基础应用

729次阅读
没有评论

Nacos 配置管理模型

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

四. Nacos 配置管理基础应用

命名空间管理

Namespace 隔离设计

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

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

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

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

四. Nacos 配置管理基础应用

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

配置管理

配置列表

四. Nacos 配置管理基础应用

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

历史版本

四. Nacos 配置管理基础应用

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

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

监听查询

四. Nacos 配置管理基础应用

监听查询中可以针对【配置】或【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) 启动程序之后在管理配置页面修改配置如下:

四. Nacos 配置管理基础应用

日志如下:

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"));
    }
}
四. Nacos 配置管理基础应用
# 复制密码
$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 页面新建用户、修改密码

正文完
 
评论(没有评论)