目录
1 Nacos作为配置中心托管配置
1.1 nacos作为配置中心概念介绍
1.参考官方文档:Nacos 融合 Spring Cloud,成为注册配置中心
2,或者参照课前资料一步步完成即可
托管到nacos server侧的配置都有一个唯一的key:namespace/group/dataId ,
接下来就是在应用端配置自己应用要读取的配置dataId ,nacos的SDK根据该 dataId 去nacos server 获取配置一个配置文件内容,而 dataId 的组成是
${prefix}-${spring.profiles.active}.${file-extension}
prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置。spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。
配置示例
1.2 nacos多环境配置
从应用侧 dataId 的组成格式来看${prefix}-${spring.profiles.active}.${file-extension}
我们是可以在不同的环境下读取nacos上的不同配置,下面针对 hailtaxi_driver 服务进行演示
1,在nacos控制台创建两个配置,一个 test 环境,一个 dev 环境test环境 dataId 为: hailtaxi-driver-test.yaml ,里面的配置项将数据库修改为一个不存在的【仅便于测试】
dev环境 dataId 为: hailtaxi-driver-dev.yaml ,里面的配置项不变
tips:可以在控制台基于原有配置文件进行克隆然后修改
2,在 hailtaxi-driver 项目的 bootstrap.yml 中添加 profile 配置
spring.profiles.active: dev
3,重启服务,访问:http://localhost:18081/driver/info/1
4,切换 profile 为 test ,重启测试,【理论结果:启动报错,找不到数据库】
5,重新切换 profile 为 dev 保证正常!!!
1.3 共享配置及扩展配置
目前:
每个应用都需要根据自己的 dataId 去nacos server读取一个配置文
件,然后加载配置文件中的配置项,
现在的场景是:
多个应用之间有许多共同的配置项,则需要在每个应用对应的配置文件中都配置这些配置项,届时管理起来极为不方便
解决办法是:
在nacos server端用一个配置文件保存这些公共配置项,各个应用通过指定这个公共配置文件的的 dataId 来读取,这就是nacos支持的共享配置
1,拿 hailtaxi-driver 为例进行改造,在控制台创建 common.yaml 的配
置文件,将 hailtaxi-driver 服务的数据源配置项放进去【便于测试】,并将
hailtaxi-driver-dev.yaml 中根数据源相关的配置项注释掉
2,在 hailtaxi-driver 服务中指定主配置和共享配置即可
shared-configs:
- dataId: common.yaml
refresh: true
指定共享配置
3,启动测试!!!
当我们有一些配置及不想放到主配置文件中也不想放到共享配置文件中,我们可以通过指定扩至配置,将信息放到扩展配置中
tips:
nacos还提供了一个扩展配置,可用于在应用端将一些不想放到主配置文件中的配置项放到扩展配置文件中
2 总结:
nacos作为配置中心 注意点
当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}file-exetension 为配置内容的数据格式,可以通过配置项
spring.cloud.nacos.config.file-extension 来配置。