Nacos配置管理中心
一、Nacos配置管理
也就是说Nacos不仅能充当注册中心,还能用来配置成配置中心。
1、统一配置管理
代码演示如下所示:
现在我们知道,Nacos配置管理中心已经有管理好的配置文件了(usersevice-dev.yaml),那么我们微服务(也就是一个功能模块,比如用户功能模块,现在这个微服务假如需要用到该Nacos配置管理中心管理的这个配置文件中的配置信息数据了)那么我们这个微服务怎么能够读取拉取到Nacos配置管理中心中管理的这个配置文件呢:
特别注意:如果nacos配置文件是yaml格式的,那么bootstrap文件就用bootstrap.yml格式,如果nacos配置文件是properties格式的,那么bootstrap文件就用bootstrap.properties格式
代码实现如下所示:
第一步:
<!--Nacos配置管理依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
第二步:
spring:application:name: userservice # 服务名称profiles:active: dev #开发环境,这里是devcloud:nacos:server-addr: localhost:8848 # Nacos服务器地址config:file-extension: yaml #文件后缀名
通过第二步的操作之后,我们就知道我们这个微服务(用户功能模块),就已经拉读取到Nacos管理中心管理的那个配置文件了,我们知道该配置文件中有一个时间的配置属性数据,那么我们就可以验证一下我们这个微服务是否读到到该配置文件中的时间配置属性数据了(注意:我们这个微服务本地配置文件是没有时间配置属性数据的,只有Nacos管理中心的那个配置文件有,如果我们在这个微服务项目中能够获取到配置文件中的这个关于时间的配置属性数据,那么就证明我们这个微服务确实拉读取到了Nacos上的那个管理的配置文件了):
注:nacos配置管理中心中的配置文件也相当于 yml或者properties文件,因此我们同样可以使用 @Value注解来获取nacos配置中心中的数据配置
总结:
也就是说通过上面的演示,以后实际开发中如果我们的微服务(如一个功能模块)需要添加新的配置了,那么就不要再在自己本地的配置文件中修改添加配置数据了(因为在本地修改的话需要重启服务器才能生效),我们可以直接在Nacos管理中心添加一个配置文件,然后让这个微服务直接拉取这个配置文件然后获取到这个配置文件中微服务想要修改添加的新配置信息数据,最后再和自己本地的配置文件合并就可以了,同样达到了修改配置文件的作用,就可以不用再重新开启服务器了(以后项目会很多如果都重新启动的话太消耗资源了。)
二、配置热更新
也就是说通过上面的操作,我们确实能获取到nacos配置管理中心中的配置数据了,但是还是没有达到不用开启服务器就能获取到修改后的配置数据的目的,因此需要配置一下热更新。
因为不断的重启服务器的话,当这个修改的配置文件关联着几十个服务的时候,难不成每次修改一次配置文件都要重启几这几十个服务的服务器吗,那不麻烦死了吗,因此需要用下面的方式配置热更新
修改之后,我们思考我们微服务(也就是用户功能模块)在不启动服务器的情况下怎么获取读取到这个被Nacos管理中心管理的修改之后的这个配置文件中的配置数据呢(因为不断的重启服务器的话,当这个修改的配置文件关联着几十个服务的时候,难不成每次修改一次配置文件都要重启几这几十个服务的服务器吗,那不麻烦死了吗,因此需要用下面的方式配置热更新):
第一种方式:
当微服务(用户模块功能)是以@Value注解来拉读取Nacos管理中心中被管理的那个配置文件的时候,我们只需要在@Value注解对应的类上加上@RefreshScope注解即可完成热更新,也就是说微服务不用重启服务器同样可以拉读取到Nacos中修改的那个配置文件中修改的配置数据信息。
注意:这种方式需要在加上@RefreshScope注解之后重启一下服务器,重启过之后,以后再修改管理的配置文件中的配置信息的时候就不用再重启服务器了。
然后我们在微服务的服务器不重启的情况下,会发现还真的能够拉读取到Nacos管理中心中那个修改后的配置文件中的配置数据信息啊:
第二种方式:(推荐使用)
当获取Nacos配置管理中心中的配置文件数据是以@ConfigurationProperties注解的形式拉读取被管理的配置文件中的配置数据的时候,什么注解都不用加就可以实现热更新了。(也就是说只要是通过用@ConfigurationProperties注解来读取配置文件中的数据的话,那么就直接实现热更新问题了。)
复习@ConfigurationProperties注解获取配置文件数据的用法:(忘记的话可以看前面yaml数据格式的笔记)
三、多环境配置共享
直接上代码演示吧:
假如这个是无dev环境userservice.yaml配置文件中的数据:
假如这个是有dev环境userservice.yaml配置文件中的数据:
然后我们微服务(也就是用户接口功能),bootstrap.yml配置中只配置了拉读取Nacos管理配置中心中的有dev环境userservice.yaml配置文件中的数据,我们压根就没配置拉读取Nacos管理配置中心中的没有dev环境userservice.yaml配置文件中的数据,但最终我们会发现,好家伙我们明明配置的只想拉读取到Nacos管理配置中心中的有dev环境userservice.yaml配置文件中的时间数据,但实际结果是却把那个没有dev环境userservice.yaml配置文件中的“环境共享属性值”数据也拉取到了,最终会发现好家伙我们明明想要拉取的是带有dev环境userservice.yaml配置文件中的时间数据,却没想到最终却把带有dev环境userservice.yaml配置文件中的时间数据和没有dev环境userservice.yaml配置文件中的“环境共享属性值”数据都拉取获取到了:
总结:
通过上面的演示我们就知道了虽然我们微服务的bootstrap.yml配置中配置的是只拉取Nacos管理配置中心中的有dev环境userservice.yaml配置文件中的时间数据,但是我们同样可以把Nacos管理配置中心中的没有dev环境userservice.yaml配置文件中的数据给拉取到,最终会发现却把Nacos管理配置中心中带有dev环境userservice.yaml配置文件中的时间数据和没有dev环境userservice.yaml配置文件中的“环境共享属性值”数据都拉取获取到了(具体如何拉取一个配置文件中属性对应的数据的过程,看yml的笔记即可)。
注意:但是我们如果微服务的bootstrap.yml配置中配置的是只拉取Nacos管理配置中心中的没有dev环境userservice.yaml配置文件中的数据的时候,就只能拉取到这个无环境的配置文件中的数据,不能拉取到带dev环境的配置文件中的数据。
思考:userservice.yaml(带dev环境)、userservice.yaml(不带dev环境)优先级
首先我们上面知道了,当我们微服务的bootstrap.yml配置中配置的是只拉取Nacos管理配置中心中的有dev环境userservice.yaml配置文件中的数据的时候,最终的结果是却把Nacos管理配置中心中带有dev环境userservice.yaml配置文件中的数据和没有dev环境userservice.yaml配置文件中的数据都拉取获取到了。
那么我们现在思考:如果此时userservice.yaml(带dev环境)、userservice.yaml(不带dev环境)的这两个配置文件当中的配置属性数据是一样的时候,那么会以谁的为准呢?
userservice.yaml(不带dev环境):
userservice.yaml(带dev环境):
首先我们知道了我们微服务可以获取到上面的两个配置文件中的数据,那么如果此时上面的两个配置文件中都有这个name对应的配置数据的话,我们微服务就想获取这个name对应的配置数据的时候,到底会拉读取到上面两个配置文件中的谁的name对应的配置数据呢:
Nacos配置管理中心相关推荐
- springboot nacos配置中心_SpringBoot开发案例之Nacos配置管理中心
前言 在开发过程中,通常我们会配置一些参数来实现某些功能,比如是否开启某项服务,告警邮件配置等等.一般会通过硬编码.配置文件或者数据库的形式实现. 那么问题来了,如何更加优雅的实现?欢迎来到 Naco ...
- Nacos(第一篇)_Springboot2.x+Nacos配置管理中心
前言 在开发过程中,我们通常会配置一些参数来实现某些功能,如:开启某些服务,邮箱通知,短信通知等:一般在这个时候,我们都是通过硬编码来实现.配置文件或数据库实现. Nacos 配置管理 Nacos 是 ...
- nacos配置中心使用_SpringBoot开发案例Nacos配置管理中心
前言 在开发过程中,通常我们会配置一些参数来实现某些功能,比如是否开启某项服务,告警邮件配置等等.一般会通过硬编码.配置文件或者数据库的形式实现. 那么问题来了,如何更加优雅的实现?欢迎来到 Naco ...
- Nacos - 配置管理中心(阿里开源)
配置中心相信大家都有听过,zookeeper.apollo等等都是配置中心的代表,但大部分都是JAVA系为主的,笔者主要开发语言使用的是Golang当然也有类似于ETCD这样的组件,但是并不方便管理也 ...
- 微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关
微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关 1. 微服务简介 1.1 服务架构演变 1.2 SpringCloud ...
- 阿里面试这样问:Nacos配置中心交互模型是 push 还是 pull ?(原理+源码分析)...
本文来源:公众号「 程序员内点事」 对于Nacos大家应该都不太陌生,出身阿里名声在外,能做动态服务发现.配置管理,非常好用的一个工具.然而这样的技术用的人越多面试被问的概率也就越大,如果只停留在使用 ...
- 4.Spring Cloud Alibaba教程:Nacos配置管理
概述 Nacos作为配置中心,跟传统的配置文件不同.它可以实现线上修改配置,实时生效,中间不需要重启任何应用. 知识点 Nacos通过Namespace.Group.DataID来做多环境配置,他们之 ...
- Nacos配置中心用法详细介绍
上篇文章介绍了 Nacos 作为注册中心的用法,除此之外,Nacos 还能作为配置中心使用,那这篇文章就介绍下 Nacos 作为配置中心的基本用法,首先我们先了解下为什么需要使用配置中心. 一.为什么 ...
- Nacos注册中心的部署与用法详细介绍
一.什么是注册中心: 我们知道微服务彼此间独立部署.具有清晰的边界,服务间通过远程调用来构建复杂的业务功能.而服务册中心在微服务项目中扮演着非常重要的角色,那么注册中心又是什么,使用服务注册中心可以解 ...
最新文章
- C#中使用WCF一些常见问题及解决方案
- Cloud Computing:云网端融合的简介、层次、典型代表、未来趋势之详细攻略
- Linux下的TCP Wrapper机制
- java配置文件扫描包_SpringMVC和Spring的配置文件扫描包详解
- flask学习笔记之flask-migrate
- 个税10% 人群_人群管理如何使我们的搜索质量提高27%
- java中如何声明班干部,java类成员变量的定义和声明
- 100行代码撸完SpringIOC容器
- 服务器遭受***后的处理过程
- ASP.NET ZERO 学习 JTable的使用
- 在free bsd上跑JMeter 的 plugin PerfMon Server Agent
- 怎么在HTML图片中加文字,html+css怎么在图片上添加文字
- 字节版 趣味测试小程序源码
- 第9章:多媒体基础知识
- 网络攻防篇 使用批处理文件进行来恶作剧-01
- 存储基础知识学习(12月)
- Rolling In The Deep中文歌词翻译能对的上节奏
- 深度学习的研究方向和发展趋势
- 人工智能的未来趋势将会走向哪里?
- Qt生成二维码图片方法
热门文章
- 房地产评估师考试能用计算机,2010全国房地产估价师考试考前注意事项
- 仿陌陌选项卡:文字大小变化的SlidingScaleTabLayout
- 一款支持加密的笔记StandardNotes
- 体验华为Mate40 Pro评测后,终于明白为何加价了
- 求数的最大值(重载)
- 正态分布 置信区间 威尔逊置信区间(Wilson score interval)
- 最适合运动的蓝牙耳机、运动型蓝牙耳机推荐
- c语言函数返回值存放数组,C语言函数返回数组
- 存储到底是移动硬盘好还是网盘为主好?
- vue 页面动态切换title keywords description (seo的设置)