
「SpringCloud」Nacos分布式配置中心
作者 AI全栈程序猿
来源 | 今日头条
随着业务的发展、微服务架构的升级,服务的数量、程序的配置日益增多(各种微服务、各种服务器地址、各种参数),传统的配置文件方式和数据库的方式已无法满足开发人员对配置管理的要求:
- 安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏。
- 时效性:修改配置,需要重启服务才能生效。
- 局限性:无法支持动态调整:例如日志开关、功能开关。
因此,分布式配置中心应运而生!
使用Nacos之前首先了解一下SpringBoot配置文件bootstrap与application的加载顺序:
- bootstrap.yml(bootstrap.properties)先加载
- application.yml(application.properties)后加载
- bootstrap.yml 用于应用程序上下文的引导阶段
- bootstrap.yml 由父Spring ApplicationContext加载
Nacos的Config默认读取的是bootstrap.yml配置文件,如果将Nacos Config的配置写到application.yml里面,工程启动时就会一直报错。
1、在GitEgg-Platform工程的子工程gitegg-platform-cloud中引入
spring-cloud-starter-alibaba-nacos-config依赖,重新install GitEgg-Platform工程,然后GitEgg-Cloud项目需要重新在IDEA中执行Reload All Maven Projects。
2、因为Nacos默认读取服务配置要写在 bootstrap.yml 中,所以我们在gitegg-service-system工程下新建 bootstrap.yml文件,同时在 bootstrap.yml 做好Nacos Config的配置
3、在Nacos服务器上新建
gitegg-service-system.yaml配置,将application.yml里面的配置信息复制到Nacos服务器上的配置信息里,然后删除application.yml,在 Nacos Spring Cloud 中,`dataId` 的完整格式如下:
- `prefix` 默认为 `spring.application.name` 的值,也可以通过配置项 `spring.cloud.nacos.config.prefix`来配置。
- `spring.profiles.active` 即为当前环境对应的 profile,详情可以参考 [Spring Boot文档](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html#boot-features-profiles)。 注意:当 `spring.profiles.active` 为空时,对应的连接符 `-` 也将不存在,dataId 的拼接格式变成 `${prefix}.${file-extension}`
- `file-exetension` 为配置内容的数据格式,可以通过配置项 `spring.cloud.nacos.config.file-extension` 来配置。目前只支持 `properties` 和 `yaml` 类型。
详细配置信息可以参考 Nacos文档
:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
4、以上就可以读取配置文件了,我们在SystemController.java里面添加读取配置的测试代码,读取配置的某一个属性,如果需要读取实时刷新数据,可以添加
5、启动项目,打开浏览器访问:
http://127.0.0.1:8001/doc.html,点击Nacos读取配置文件测试接口菜单,进行测试,可以查看读取到的配置信息,因为添加了@RefreshScope,我们测试实时刷新功能,手动修改Nacos里面的spring.datasource.maxActive配置,再次执行测试接口,可以看到读取到的配置信息已刷新
源码在
https://gitee.com/wmz1930/GitEgg的chapter-10分支。
