文章目录
一、Nacos配置中心使用
官方文档: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。

1.1 快速开始
准备配置,nacos server中新建nacos-config.properties


注意,配置格式为properties.

注意dataid是以 properties(默认的文件扩展名方式)为扩展名。
1.2 搭建nacos-config服务
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
1)引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>spring-cloud-alibaba-mall</artifactId>
<groupId>org.jihu.mall</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>nacos-config</artifactId>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
</project>
2)添加bootstrap.properties (注意不是application.yml,否则会一直报错,连接地址为localhost:8848)
spring.application.name=nacos-config
# 配置中心地址
spring.cloud.nacos.config.server-addr=192.168.131.172:8848
注意当你使用域名的方式来访问 Nacos 时,spring.cloud.nacos.config.server-addr 配置的方式为 域名:port。 例如 Nacos 的域名为abc.com.nacos,监听的端口为 80,则 spring.cloud.nacos.config.server-addr=abc.com.nacos:80。 注意 80 端口不能省略。
3)启动服务,测试微服务是否使用配置中心的配置
@SpringBootApplication
public class NacosConfigApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("user.name");
String userAge = applicationContext.getEnvironment().getProperty("user.age");
System.out.println("user name :" + userName + "; age: " + userAge);
}
}

基于 dataid 为 yaml 的文件扩展名配置方式
spring-cloud-starter-alibaba-nacos-config 对于 yaml 格式也是完美支持的。这个时候只需要完成以下两步:
1、在应用的 bootstrap.properties 配置文件中显示的声明 dataid 文件扩展名。如下所示:
spring.cloud.nacos.config.file-extension=yaml
2、在 Nacos 的控制台新增一个dataid为yaml为扩展名的配置,如下所示:

这两步完成后,重启测试程序,可以看到如下输出结果:

注意:默认情况下会去以微服务名称进行匹配,所以默认的配置文件可以不用谢扩展名(.yaml/.properties)。
1.3 Config相关配置
Nacos 数据模型 Key 由三元组唯一确定, Namespace默认是空串,公共命名空间(public),分组默认是 DEFAULT_GROUP

支持配置的动态更新
@SpringBootApplication
public class NacosConfigApplication {
public static void main(String[] args) throws InterruptedException {
ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
while (true) {
//当动态配置刷新时,会更新到 Enviroment中,因此这里每隔一秒中从Enviroment中获取配置
String userName = applicationContext.getEnvironment().getProperty("user.name");
String userAge = applicationContext.getEnvironment().getProperty("user.age");
System.err.println("user name :" + userName + "; age: " + userAge);
TimeUnit.SECONDS.sleep(1);
}
}
}
我们修改nacos上的配置文件,然后再来观察log:

可以看打到,这里很快的就读取到了修改后的值。
支持profile粒度的配置
spring-cloud-starter-alibaba-nacos-config 在加载配置的时候,不仅仅加载了以 dataid 为 ${spring.application.name}.${file-extension:properties} 为前缀的基础配置,还加载了dataid为 ${spring.application.name}-${profile}.${file-extension:properties} 的基础配置。在日常开发中如果遇到多套环境下的不同配置,可以通过Spring 提供的 ${spring.profiles.active} 这个配置项来配置。
spring.application.name=nacos-config
# 配置中心地址
spring.cloud.nacos.config.server-addr=192.168.131.172:8848
# dataid 为 yaml 的文件扩展名配置方式
# `${spring.application.name}.${file-extension:properties}`
# 声明 dataid 文件扩展名
spring.cloud.nacos.config.file-extension=yaml
#profile粒度的配置 `${spring.application.name}-${profile}.${file-extension:properties}`
spring.profiles.active=develop
${spring.profiles.active}当通过配置文件来指定时必须放在 bootstrap.properties 文件中。
Nacos 上新增一个dataid为:nacos-config-develop.yaml的基础配置,如下所示:

启动 Spring Boot 应用测试的代码如下:

本文详细介绍了Nacos配置中心的使用,包括快速启动、配置文件扩展名支持、动态更新、profile粒度配置、namespace与Group自定义、DataId扩展配置以及公用配置。同时,深入分析了Nacos配置中心的架构,讲解了nacos-config-client的配置获取、监听器注册和长轮询机制,以及nacos-config-server的配置发布、配置dump和长轮询处理。通过实例展示了如何在微服务中集成和使用Nacos配置中心。
最低0.47元/天 解锁文章
1372

被折叠的 条评论
为什么被折叠?



