在微服务架构下,一般会存在大量的服务。如果每个服务的配置文件都独立存储,会有如下一些问题:
1.配置文件太分散,不便于管理。
2.太多的冗余配置,通用配置不能共享。
3.不支持配置文件的动态刷新,改了配置必须要重启服务。
Nacos可以提供配置中心的服务,提供通用配置共享的功能。
本文以cloud-jifen服务为例,
1、在nacos管理系统新建配置:
cloud-jifen模块的pom文件添加引用:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
在cloud-jifen模块中的application.yml,注释掉全部内容。
resources文件夹下,新增bootstrap.yml文件:
spring: cloud: nacos: config: server-addr: localhost:8848 namespace: public group: DEFAULT_GROUP username: nacos password: nacos prefix: cloud-jifen file-extension: yaml profiles: active: public
启动cloud-jifen模块,即可看到服务正常注册到nacos里。
Nacos的动态刷新机制,在服务者的服务类(Controller)上,添加一个注解,@RefreshScope:
@RestController @RequestMapping("/jifen") @RefreshScope public class JifenController { }
Nacos的配置共享机制,在nacos控制台上添加一个公共配置文件,common.yaml:
然后在nacos控制台上,修改cloud-jifen-public.yaml文件,只保留个性的配置信息。
目前有2个配置文件:
最后修改项目中的bootstrap.yml文件:
spring: cloud: nacos: config: server-addr: localhost:8848 namespace: public group: DEFAULT_GROUP username: nacos password: nacos prefix: cloud-jifen file-extension: yaml shared-configs: - common.yaml #指定共享配置文件支持动态刷新 refreshable-dataids: common.yaml profiles: active: public
Nacos的版本管理机制,可以在Nacos控制台上选择“历史版本”,根据DataId和Group查询配置文件的历史版本,并且可以直接通过"回滚操作",还原某一个历史版本。