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 页面新建用户、修改密码