Nacos服务---配置中心
Nacos的配置中心的配置获取,主要通过 Namespace、group、Data ID能够定位到一个配置集。
1、配置集(Data ID)
? 在系统中,一个配置文件通常就是一个配置集,一个配置集可以包含了系统的各种配置信息,例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。每个配置集都可以定义一个有意义的名称,就是配置集的ID即Data ID。
配置集中包含的一个个配置内容就是配置项。它代表一个具体的可配置的参数与其值域,通常以 key=value 的形式存在。例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR) 就是一个配置项。
2、配置分组(Group)
? 配置分组是对配置集进行分组,通过一个有意义的字符串(如 Buy 或 Trade )来表示,不同的配置分组下可以有相同的配置集(Data ID)。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:可用于区分不同的项目或应用,例如:学生管理系统的配置集可以定义一个group为:STUDENT_GROUP。
注 :默认情况下使用 DEFAULT_GROUP 组。
3、命名空间(Namespace)
? 命名空间(namespace)可用于进行不同环境的配置隔离。例如可以隔离开发环境、测试环境和生产环境,因为它们的配置可能各不相同,或者是隔离不同的用户,不同的开发人员使用同一个nacos管理各自的配置,可通过namespace隔离。不同的命名空间下,可以存在相同名称的配置分组(Group) 或 配置集。
命名空间在代码调用时,使用的是 命名空间的ID,在创建命名空间时,Nacos会为每个命名空间创建ID,如图:
文章图片
注 :默认情况使用的是public 命名空间。
4、最佳实践
? Nacos抽象定义了Namespace、Group、Data ID的概念,具体这几个概念代表什么,取决于我们把它们看成什么,这里推荐给大家一种用法:
Namespace:代表不同环境,如开发、测试、生产环境。
Group:代表某项目,如XX医疗项目、XX电商项目
DataId:每个项目下往往有若干个工程,每个配置集(DataId)是一个工程的主配置文件
5、代码调用:
测试用例代码块:
package com.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;
/**
* @author Jay
* @version 1.0
**/
public class demoMain {
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.yaml";
//group
String group = "DEFAULT_GROUP";
//namespace
String namespace = "c67e4a97-a698-4d6d-9bb1-cfac5f5b51c4";
Properties properties =new Properties();
properties.put("serverAddr",serverAddr);
properties.put("namespace",namespace);
//获取配置
ConfigService configService = NacosFactory.createConfigService(properties);
// String dataId, String group, long timeoutMs
String config = configService.getConfig(dataId, group, 5000);
System.out.println(config);
//String dataId, String group, Listener listener
configService.addListener(dataId, group, new Listener() {
public Executor getExecutor() {
return null;
}
//当配置有变化 时候获取通知
public void receiveConfigInfo(String s) {
System.out.println(s);
}
});
while (true){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}}
}
整合SpringCloud 代码块:
由于springboot加载顺序 bootstrap > application ,使用配置中心的信息要配置在 bootstrap中。(踩坑点!)
server:
port: 9999spring:
application:
name: serviceName
cloud:
nacos:
config:
#enabled: false
server-addr: 192.168.83.129:8848
file-extension: yaml
namespace: 1969d1e1-1c46-43ea-b57c-af75a7f8aad9
group: DEV_GROUP
注:Data Id 的名称就是application的 name 加 file-extension ,即为 serviceName.yaml , file-extension的类型是需要根据Nacos上的文件类型定义。
文章图片
java代码:
package com.nacos.service1.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class NacosConfigController {@Value("${trussan.host}")
private String config1;
@GetMapping("/configs")
public String getConfigs(){return config1;
}
}
这种获取方式,但Nacos上的配置信息发生修改时,由于spring @value的注解原因,服务端拿到的值是不会发生改变的,所以生产中建议使用如下获取配置信息的方式:
package com.nacos.service2.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class NacosConfigController {@Autowired
ConfigurableApplicationContext applicationContext;
@GetMapping("/configs")
public String getConfigs(){return applicationContext.getEnvironment().getProperty("config.service");
}
}
【Nacos服务---配置中心】注入上下文的配置,动态获取。
推荐阅读
- 社保代缴公司服务费包含哪些
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- 探索免费开源服务器tomcat的魅力
- 振兴中华---争做新时代的好少年
- 青春的恋习曲
- 《将来的你,一定会感谢现在战胜烦恼的自己-------第四章/第十一节/用逆向思维解除烦恼》
- [源码解析]|[源码解析] NVIDIA HugeCTR,GPU版本参数服务器---(3)
- 无私便是最大的自私---多久没有无私过了
- 《教育心理学》读书笔记五---关注特殊群体学生|《教育心理学》读书笔记五---关注特殊群体学生 做有温度的教育