官网:http://nacos.io/
官方文档:https://nacos.io/zh-cn/docs
官方介绍:
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。
1、统一配置
2、统一规范
3、动态刷新自定义配置
4、自动校验配置文件
nacos 支持三种部署模式
单机模式 --用于测试和单机使用
集群模式 – 用于生产环境,确保高可用
多集群模式 --用于多数据中心场景
单机模式部署
在官网下载nacos,安装解压后进入nacos\bin目录
linux执行./startup.sh -m standalone,启动nacos
windwos执行startup.cmd,启动nacos
nacos 默认端口是8848,可以通过nacos\conf\application.properties中修改server.port属性修改端口;
单机模式支持mysql(目前只支持mysql,默认是文件方式存储),在nacos\conf\application.properties 修改数据库配置信息
启动后访问http://localhost:8848/nacos进行登录,用户名密码都是nacos,进入控制台如下
功能介绍:
1、配置管理:nacos的配置中心服务端,在配置管理功能做项目的配置信息维护;
2、服务管理:nacos的注册中心服务段,在服务管理功能做服务信息维护;
3、权限控制:nacos的用户信息,权限控制
4、命名空间:做环境隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
5、集群管理:管理分布式多节点信息
新建配置,比如我们要配置一个数据库连接信息的配置信息,打开配置管理》配置列表,点击右上角加号新增配置
data id : 唯一,相当于是配置文件的标志
group:配置分组
配置格式支持:text、json、xml、yml、html、properties
配置内容:具体配置信息
配置完成后点击发布,发布之后即可在项目中引用,在发布时nacos会按照配置格式校验配置文件内容,配置内容不符合格式时会给出提示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FpMEATL3-1594809500994)(nacos.assets/image-20200715161341784.png)]
<dependency>
<groupId>com.alibaba.nacosgroupId>
<artifactId>nacos-spring-contextartifactId>
<version>0.2.2-RC1version>
dependency>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:nacos="http://nacos.io/schema/nacos"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://nacos.io/schema/nacos
http://nacos.io/schema/nacos.xsd">
<nacos:annotation-driven/>
<nacos:global-properties server-addr="127.0.0.1:8848" />
<nacos:property-source data-id="db.properties" auto-refreshed="true" group-id="common"/>
beans>
在spring配置文件中进行导入
<import resource="nacos.xml"/>
注:spring原生的@Value注解也可以取到内容,但是不会自动刷新
使用nacos封装后的@NacosValue注解,并指定autoRefreshed的属性为true时,当nacos服务端更新时后台会动态刷新配置内容
@NacosValue(value = "${FILE_PATH}",autoRefreshed = true)
private String basePath;
<dependency>
<groupId>com.alibaba.bootgroupId>
<artifactId>nacos-config-spring-boot-starterartifactId>
<version>0.2.1version>
dependency>
在springboot的配置文件中配置如下内容
nacos:
config:
server-addr: 127.0.0.1:8848
/**
* @author Mao
* @Description: nacos配置类
* @date 2020/7/15 16:20
*/
@Configuration
@NacosPropertySource(dataId = "db.properties",autoRefreshed = true,groupId = "common")
@NacosPropertySource(dataId = "uniras.properties",autoRefreshed = true,groupId = "uniras")
public class NacosConfig {
}
@NacosValue(value = "${FILE_PATH}",autoRefreshed = true)
private String filePath;
<dependency>
<groupId>com.alibaba.nacosgroupId>
<artifactId>nacos-spring-contextartifactId>
<version>0.2.2-RC1version>
dependency>
public static void main(String[] args) throws NacosException, InterruptedException {
String serverAddr = "localhost";
String dataId = "url.properties";
String group = "common";
Properties properties = new Properties();
properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);
ConfigService configService = NacosFactory.createConfigService(properties);
//----------------------监听,做动态刷新
configService.addListener(dataId, group, new Listener() {
@Override
public void receiveConfigInfo(String configInfo) {
}
@Override
public Executor getExecutor() {
return null;
}
});
String content = configService.getConfig(dataId, group, 5000);
System.out.println(content);
}
1、统一规划配置文件
提取通用配置,通用配置中规范配置的属性名称,各项目根据规范后的名称获取统一配置文件中的配置信息,例如:db.properties、kafka.properties、redis.properties、url.properties、以及其他通用配置或者通用第三方插件配置这些配置信息一个项目里只配置一份不在进行多份重复配置
2、一个模块一个自定义配置文件
每个模块定义一个自定义的配置文件,模块与模块之间互不干扰,例如工单模块与public模块不个各自定义一个自定义配置文件,工单模块中用到的配置内容在工单模块的自定义配置文件中进行配置
3、动态刷新自定义配置数据
对自定义配置的一些配置数据选择使用@NacosValue来实现自动刷新配置,对于特殊配置,比如数据库配置信息、直接在spring配置文件中使用的配置信息等这些配置信息一经改动需重启稽核系统才能生效