Nacos配置管理基础应用
1、Nacos配置管理基础应用
1.1、Nacos配置管理模型
对于Nacos配置管理,通过Namespace、group、Data ID能够定位到一个配置集。
//使用nacos-client获取远程nacos服务上的配置信息
//nacos server 地址
String serverAddr = "127.0.0.1:8848";
//data id
String dataId = "nacos-simple-demo.yml";
//group
String group = "DEFAULT_GROUP";
//命名空间
String namespace = "20dd9cd5-8ce6-4f73-8380-dfa3074ce5a8";
//获取配置
Properties properties = new Properties();
properties.put("serverAddr",serverAddr);
properties.put("namespace",namespace);
//获取配置
ConfigService configService = NacosFactory.createConfigService(properties);
String config = configService.getConfig(dataId, group, 5000);
System.out.println(config);
以上代码说明将从地址为127.0.0.1:8848的nacos配置中心获取配置,通过以下信息定位配置集:
namespace:ee247dde-d838-425c-b371-029dab26232f
注意:namespace需要指定id。
group:DEFAULT_GROUP
Data Id:nacos-simple-demo.yml
1.2、命名空间管理
1.2.1、namespace 隔离设计
1.2.2、命名空间管理
//使用nacos-client获取远程nacos服务上的配置信息
//nacos server 地址
String serverAddr = "127.0.0.1:8848";
//data id
String dataId = "nacos-simple-demo.yml";
//group
String group = "DEFAULT_GROUP";
//命名空间
String namespace = "20dd9cd5-8ce6-4f73-8380-dfa3074ce5a8";
//获取配置
Properties properties = new Properties();
properties.put("serverAddr",serverAddr);
properties.put("namespace",namespace);
//获取配置
ConfigService configService = NacosFactory.createConfigService(properties);
String config = configService.getConfig(dataId, group, 5000);
System.out.println(config);
1.3、配置管理
1.3.1、配置列表
配置集导出
配置集导入
配置集克隆
1.3.2、历史版本
点击回滚:
1.3.3、监听查询
package com.demo.nacos;
import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.Listener;
import com.alibaba.nacos.api.exception.NacosException;
import java.util.Properties;
import java.util.concurrent.Executor;
/**
* Description:
* Author:
* DATE: 2022/1/21 15:08
*/
public class SimpleDemoMain {
public static void main(String[] args) throws NacosException {
//使用nacos-client获取远程nacos服务上的配置信息
//nacos server 地址
String serverAddr = "127.0.0.1:8848";
//data id
String dataId = "nacos-simple-demo.yml";
//group
String group = "DEFAULT_GROUP";
//命名空间
String namespace = "20dd9cd5-8ce6-4f73-8380-dfa3074ce5a8";
//获取配置
Properties properties = new Properties();
properties.put("serverAddr",serverAddr);
properties.put("namespace",namespace);
//获取配置
ConfigService configService = NacosFactory.createConfigService(properties);
String config = configService.getConfig(dataId, group, 5000);
System.out.println(config);
//String dataId, String group, Listener listener
configService.addListener(dataId, group, new Listener() {
@Override
public Executor getExecutor() {
return null;
}
@Override
public void receiveConfigInfo(String s) {
//当配置发生变化时的响应
System.out.println(s);
}
});
// 测试让主线程不退出,因为订阅配置是守护线程,主线程退出守护线程就会退出。 正式代码中无需下面代码
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
1.4、登录管理
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.1.4.RELEASE</version>
</dependency>
编写PasswordEncoderUtil类,生成加密后的密码,采用BCrypt加密方法在每次生成密码时会加随机盐,所
以生成密码每次可能不一样。
package com.demo.nacos;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
/**
* Description: 密码加密工具类
* Author:
* DATE: 2022/1/25 17:20
*/
public class PasswordEncoderUtil {
public static void main(String[] args) {
System.out.println(new BCryptPasswordEncoder().encode("123456"));
}
}
- 创建用户名或者密码的时候,用指定用户名密码即可。
将上边程序输出的密码更新到数据库。
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 , 替换以下内容即可。
## spring security config
### turn off security
spring.security.enabled=false
management.security=false
security.basic.enabled=false
nacos.security.ignore.urls=/**
#nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.
ico,/console‐
fe/public/**,/v1/auth/login,/v1/console/health,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**