【知识目标】
1.springcloud-alibaba-nacos配置中心
2.Nacos配置中心界面使用
3.Nacos配置热加载原理
4.Nacos多环境配置使用
5.Nacos名称空间的使用
Nacos除了可以做注册中心,同样可以做配置管理来使用。
当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。
在 Nacos 控制面板中添加配置文件
创建配置文件名为bootstrap.yml,注意是bootstrap,而不是application。原因如下:
Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application
必须的配置项spring.application.name,关联nacos的dataID。
spring.cloud.nacos.discovery.server-addr指定注册中心的地址,是用于微服务注册的,如果你不需要注册该服务,也可以去掉该项,并删除discovery依赖
spring.cloud.nacos.config.server-addr指定配置中心的地址,file-extension指定配置中心中配置文件的格式
启动应用,请求预警库存
如果我们想修改配置项的值,但应用不能重新启动;这个也比较简单,只需要在控制器类加入**@RefreshScope注解,可以使当前类下的配置支持动态更新。
在nacos控制台更改配置项的值为30,再请求url如下
消费服务goods-consumer没有重新启动,值就会改变,达到了热更新。
在机器不够的情况下,需要一套Nacos多个环境使用,那么在这里一般会使用多个Namespace(dev、test、staging、prod)来区分环境,然后再通过dataID来指定每个服务的配置文件,这样就可以每个环境的服务注册发现不会相互干扰,并且也不会用到其他环境的配置文件。
在Nacos中,本身有多个不同管理级别的概念,包括:Data ID、Group、Namespace。只要利用好这些层级概念的关系,就可以根据自己的需要来实现多环境的管理。
![]() |
添加【spring.profiles.active】配置,如下所示:
spring:
application:
name: nacos-config
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # Nacos作为服务注册中心地址
config:
server-addr: 127.0.0.1:8848 # Nacos作为配置中心地址
file-extension: yml # 指定yaml格式的配置
profiles:
active: dev # 环境标识
访问:http://localhost:18203/getValue 如下图所示:
将【spring.profiles.active】配置改为【pro】再次访问:
Group在Nacos中是用来对Data ID做集合管理的重要概念。
在config下增加一条group的配置,指定配置文件所在的group,首先配置为【DEV_GROUP】
spring:
application:
name: nacos-config
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 # Nacos作为服务注册中心地址
config:
server-addr: 127.0.0.1:8848 # Nacos作为配置中心地址
file-extension: yml # 指定yaml格式的配置
prefix: nacos-config-test
group: DEV_GROUP
访问:http://localhost:18203/getValue 如下图所示:
将【group】配置成【PRO_GROUP】,再次访问:
其余方法可见:(10条消息) 【Nacos学习】四、Nacos配置的多环境管理_唯空城的博客-CSDN博客_nacos多环境配置
注:其余详情可见:(10条消息) 【Nacos学习】四、Nacos配置的多环境管理_唯空城的博客-CSDN博客_nacos多环境配置
Nacos配置有几个重要的概念
这张图很重要。表述了namespace、group和service/dataId的包含关系
Nacos给的最佳实践表明,最外层的namespace是可以用于区分部署环境的,比如test,dev,prod等。同时,也有一个商业利用价值:多租户(以后会介绍)。以namespace为单位,给用户开辟使用空间
默认情况下,namespace=public,group=DEFAULT_GROUP。
明白了这个数据模型后,新建若干个namespace:
默认的服务列表都在public空间下面,分组名称为默认分组DEFAULT_GROUP。
那如何创建一个新的命名空间呢,在nacos控制台左侧的命名空间标题,点开后,点击新建命名空间,可以看到弹出的新建命名空间窗口。
我们在开发过程中一般是用的dev环境 , 而在开发完成后我们则需要在test环境下运行 , 在发布时我们需要在prod环境下跑项目 , 我们需要用到nacos去创建dev , test , prod环境
注:本作品皆为原创,如有雷同,纯属巧合!!!