【Spring Cloud】关于Nacos配置管理的详解介绍

🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的专栏《Spring Cloud》。🎯🎯

👉点击这里,就可以查看我的主页啦!👇👇

Java方文山的个人主页

🎁如果感觉还不错的话请给我点赞吧!🎁🎁

💖期待你的加入,一起学习,一起进步!💖💖

请添加图片描述

目录

🌟前言

✨Nacos案例实操

🍃依赖导入

🍃文件配置

🍃Nacos创建配置

🍃读取配置信息

🍃 配置热更新

✨多环境配置 

✨环境隔离


🌟前言

Nacos(Naming and Configuration Service)是一个用于服务发现、配置管理和动态DNS的开源平台。它提供了一种简单而强大的方式来管理微服务架构中的配置信息,并且能够通过服务注册与发现来实现服务间的通信。

当我们的项目服务多起来的时候配置文件是必不可少的,但有些配置文件又是重复的,那么我们如果将它进行统一管理呢?那就可以用到我们的Nacos,不但有服务注册中心还有配置管理何乐而不为?话不多说直接上手。

✨Nacos案例实操

🍃依赖导入

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

🍃文件配置

SpringBoot 默认支持 properties YAML 两种格式的配置文件。
  • bootstrap.ymlbootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等
  • application.ymlapplication.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。
注意:bootstrap.yml 先于 application.yml 加载
spring:application:# 会自动根据服务名拉取data-id对应的配置文件.如果data-id跟服务名不一致 就需要手动指定data-id: # 跟服务名相同的data-id的配置文件,称之为默认的配置文件
# 除了默认的配置文件,其他配置文件必须写上后缀
name: xxcloud:nacos:discovery:# Nacos服务发现的地址server-addr: 127.0.0.1:8848config:# Nacos配置中心的配置前缀,用于指定配置文件的命名空间prefix: ${spring.application.name}# 指定Nacos配置中心地址server-addr: 127.0.0.1:8848# 使用的Nacos配置集的dataId的文件拓展名,同时也是Nacos配置集的配置格式,默认为propertiesfile-extension: yaml# 使用的Nacos的命名空间,默认为nullnamespace: f1896568-xxxx-45d8-8a93-a64c5bcc22ff# 使用的Nacos配置分组,默认为DEFAULT_GROUPgroup: DEFAULT_GROUP# 是否自动刷新配置,默认为false。使用@RefreshScope实现配置实时更新refresh: trueshared-configs:# 共享配置集1- data-id: shared-dataId-01.yamlgroup: DEFAULT_GROUPrefresh: true# 共享配置集2- data-id: shared-dataId-02.yamlgroup: DEFAULT_GROUPrefresh: true# 要导入的其他配置文件的data-id,多个之间使用逗号分隔shared-dataids: a.yml,b.yml# 可刷新的配置文件的data-id,多个之间使用逗号分隔refreshable-dataids: a.yml,b.yml

这里会根据spring.cloud.nacos.server-addr获取nacos地址,再根据
${spring.application.name}和${spring.cloud.nacos.config.file-extension}作为文件Data ID,来读取nacos的配置。 

🍃Nacos创建配置

通过localhost:8848/nacos访问我们的Nacos为其添加配置文件(配置文件中的值要与这里相符)

注意:项目的核心配置,需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。

🍃读取配置信息

在生产服务中的ConfigController中添加业务逻辑,读取conf对象的相关配置

@RestController
@Slf4j
//实现配置实时更新
@RefreshScope
public class ConfigController {//读取Nacos的配置文件信息@Value("${email.account}")private  String account;@Value("${email.password}")private  String password;@RequestMapping("/getConfig")public String getConfig() {log.info("account:{},password{}",account,password);return "🍗";}
}

在页面访问http://localhost:8081/getConfig,可以看到效果

 

🍃 配置热更新

修改nacos中的配置后,微服务中无需重启即可让配置生效,也就是配置热更新

局部方式: 使用@RefreshScope注解标注在使用配置信息的类上
全局方式: 先使用@ConfigurationProperties注解将配置读取读取到一个对象上,然后在需要使用配置的类中注入配置对象

 

✨多环境配置 

先去命名空间创建几个环境

添加dev环境配置:在nacos中添加一个produce.yaml配置

添加test环境配置:在nacos中添加一个produce.yaml配置

指定环境配置
bootstrap.yaml文件,添加要读取的环境项,内容如下: 

✨环境隔离

nacos config 支持 Namespace Group Data Id 来定位一个配置集(配置文件),可以通过不同的组合实现配置集的隔离。

  • 不同环境不同配置:例如数据源在不同的环境(开发,测试,生产)是不同的可以通过配置中心
  • 运行期间可以动态调整。例如根据各个微服务的负载状况,动态调整数据源连接池大小或者熔断阀值,并且调整时不停止微服务(配置修改后可以自动更新)

需要在指定的命名空间(环境)中创建配置信息

读取配置信息 

spring:application:name: produce#profiles:#active: dev # 指定环境cloud:nacos:discovery:server-addr: localhost:8848 # nacos 配置中心地址config:server-addr: ${spring.cloud.nacos.discovery.server-addr} # nacos 配置中心地址prefix: ${spring.application.name} #文件名file-extension: yaml  # 文件扩展名group: CONFIG_GROUP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/328952.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux学习记录——삼십유 传输层TCP协议(1)

文章目录 1、TCP协议报文1、报头和有效载荷的分离2、TCP可靠性3、序号和确认序号4、16位窗口大小5、6个标志位和紧急指针 2、TCP可靠性1、应答机制2、超时重传机制3、连接管理机制握手挥手 3、流量控制 1、TCP协议报文 UDP属于TCP/IP协议族。 1、报头和有效载荷的分离 从头…

Unity中Shader雾效在场景中的调节技巧

文章目录 前言一、修改棋盘格Shader的Cull可以在属性面板控制1、在属性面板定义CullMode2、在SubShader中&#xff0c;使用CullMode3、这样就可以在不同剔除情况下使用棋盘格场景了 二、调节天际线颜色和雾融为一体1、在摄像机设置不渲染天空盒&#xff0c;渲染单一颜色2、采样…

qt自定义控件的封装

刚学了一个很有意思的东西,前面学了list,Tree,Table三大控件和一部分常用基础控件,但感觉没啥意思,就是用别人的直接用,刚学了一个自定义控件的封装,流程如下: 想把两个不相关的组件封装在一块,直接用ui不行,所以先新添加了qt设计师页面,新添加了一个SmallWidget *ui 在smal…

一篇五分生信临床模型预测文章代码复现——Figure 10.机制及肿瘤免疫浸润(十)——Cibersort——完结

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

Mybatis-Plus的条件构造器QueryWrapper UpdateWrapper详解

文章目录 1. 引言2. Mybatis-Plus简介3. QueryWrapper3.1 基本用法3.2 动态条件拼接3.3 Lambda表达式的高级用法 4. UpdateWrapper4.1 基本用法4.2 动态条件拼接4.3 Lambda表达式的高级用法 5. 拓展功能与未来展望5.1 动态SQL的使用5.2 自定义条件构造器 6. 总结 &#x1f389;…

DQL命令查询数据(三)

本课目标 掌握MySQL的多表查询 SQL语句的综合应用 多表连接查询 通过各个表之间共同列的关联性&#xff08;例如&#xff1a;外键&#xff09;来查询的 分类&#xff1a; 内连接(INNER JOIN) &#xff0c;可简写为 JOIN&#xff1b;左外连接(LEFT OUTER JOIN)&#xff0c;…

VScode 画图插件

开源免费的插件 随着http://draw.io开源vs code插件之后&#xff0c;它一跃成为最强大的流程图工具。 目前http://draw.io支持3种文件后缀&#xff0c;你只需要新建3种后缀之一的文件就可以在vs code中画流程图&#xff0c;它们分别是&#xff1a; *.drawio*.dio*.drawio.sv…

docker部署simpleDocker

1&#xff0c;安装docker&#xff0c;请参考 linux安装docker 2&#xff0c;安装docker-compose&#xff0c;请参考 Docker-Compose 3&#xff0c;安装simpleDocker 准备docker-compose.yml文件 version: 3 services:redis:container_name: redisimage: redis:latestweb:conta…

7+非肿瘤+WGCNA+机器学习+诊断模型,构思巧妙且操作简单

今天给同学们分享一篇生信文章“Platelets-related signature based diagnostic model in rheumatoid arthritis using WGCNA and machine learning”&#xff0c;这篇文章发表在Front Immunol期刊上&#xff0c;影响因子为7.3。 结果解读&#xff1a; DEGs和血小板相关基因的…

Python笔记02-基础概念、数据类型及字符串格式化

文章目录 字面量注释变量数据类型标识符运算符字符串数据输入 字面量 在代码中&#xff0c;被写下来的固定的值&#xff0c;称之为字面量 Python中常用的有6种值&#xff08;数据&#xff09;的类型 如下变量被直接写在程序中&#xff0c;称之为字面量包括 数字和字符串类型 …

STL标准库与泛型编程(侯捷)笔记3

STL标准库与泛型编程&#xff08;侯捷&#xff09; 本文是学习笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 参考链接 Youbute: 侯捷-STL标准库与泛型编程 B站: 侯捷 - STL Github:STL源码剖析中源码 https://github.com/SilverMaple/STLSourceCo…

uniapp:签字版、绘画板 插件l-signature

官方网站&#xff1a;LimeUi - 多端uniapp组件库 使用步骤&#xff1a; 1、首先从插件市场将代码下载到项目 海报画板 - DCloud 插件市场 2、下载后&#xff0c;在项目中的uni_modules目录&#xff08;uni_modules优点&#xff1a;不需要import引入&#xff0c;还可以快捷更新…