Nacos配置管理
- 配置管理
- 配置共享
- 配置热更新
配置管理
将微服务集群中常用,经常变化的配置都写到一个独立的配置文件微服务中进行统一管理
配置共享
在Nacos的界面当中进行配置管理,在配置列表中添加配置
比如各个服务中的jdbc的连接配置:
还有比如日志配置
添加之后需要拉取配置服务到微服务项目中
在未来的微服务启动的时候,首先根据SpringCloud框架拉取Nacos中的共有配置初始化Spirng容器,然后再根据SpringBoot加载自己的配置信息,再次初始化Spring容器,但是由于Nacos的地址配置存在于本地的配置文件中,所以需要再SpringCloud中创建一个bootstrap配置文件作为引入文件,从它开始进行读取
完成拉取配置文件需要引入依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
在配置文件的微服务中配置bootstrap.yaml
spring:
application:
name: 服务名称
cloud:
nacos:
server-addr: 服务器地址
config:
file-extension: yaml #文件名称后缀
shared-configs: #共享配置
-dataId: shared-jdbc.yaml #共享的数据库相关配置
-dataId: shared-log.yaml #共享的日志配置
由于SpringCloud Config的依赖进行自动配置后,项目启动会自动将本地的配置文件中的配置信息将Nacos中拉取下来的配置信息占位符进行替换
配置热更新
当修改配置文件中的配置时,微服务无需重启即可使配置生效
前提条件:
- nacos中需要一个与微服务名称相关的配置文件
- 微服务中需要通过特定的方式读取热配置文件
@ConfigurationProperties(prefix="文件名称")
@Data
@ConfigurationProperties(prefix="服务名")
public class test{
//对应的属性
}
或者通过@Value
进行注解
@Data
@RefreshScope //注解表名该属性需要热更新
public class test{
@Value("${属性名}")
//属性
}