nacos 配置动态更新-笔记

本文属于b站图灵课堂springcloud笔记系列。讲得好还不要钱,值得推荐。

官方解释:nacos配置中心实时刷新的原理是什么? | Nacos 官网

专家官方解答 :

Nacos配置中心实时刷新的原理基于以下几个核心步骤与机制,这些信息可以从提供的知识内容中提炼出来:

  1. 配置存储与监听: Nacos Server作为配置中心,负责存储所有配置信息。当应用启动并配置了Nacos Config客户端后,客户端会连接到Nacos Server并根据配置的dataIdgroup订阅相应的配置。

  2. @NacosPropertySource与@NacosValue注解: 在Spring Boot应用中,通过@NacosPropertySource注解可以指定要加载的配置源(dataId),同时通过autoRefreshed = true参数开启自动刷新功能。而@NacosValue注解则用于注入配置值到Bean的字段上,并可通过autoRefreshed = true使该值具备动态更新的能力。

  3. 长轮询机制: Nacos客户端实现配置实时更新的一个关键技术是长轮询(Long Polling)。客户端定期向Nacos Server发送请求检查配置是否有更新,如果没有更新,服务器会保持连接不响应,直到有新的配置变更或达到超时时间。这种方式能有效减少网络请求次数,提高效率。

  4. 配置变更推送: 当配置在Nacos Server端发生变更时,Nacos Server会立即通知所有订阅了该配置的客户端。客户端收到更新通知后,会立刻获取最新的配置并更新到本地环境,进而更新应用中的相关属性值。

  5. 动态更新应用状态: 如示例代码所示,一旦配置值如useLocalCache发生变化,通过Nacos Value注入的属性值会自动更新,从而影响到应用的行为,比如从数据库读取数据的策略变化等。

综上所述,Nacos配置中心实时刷新的核心在于其客户端与服务端的高效通信机制,以及Spring Boot应用通过注解实现的配置自动绑定与刷新能力,确保了配置变更能够快速、准确地被应用感知并应用到实际运行环境中。

 这里老师又给额外拓展了一下长连接轮询的优化方案:

Nacos Client端需要去获取服务端变更的配置内容,但前提是需要先进行比较。也就是说将客户端本地缓存的配置信息和服务器端获取的配置信息进行比较。一旦发现本地缓存的配置内容和服务端的配置内容有差异,那么,就表示服务器端的配置有更新。可能因为客户端的配置比较多,而导致对比的时间较长,使得配置的同步效率非常低。优化:

1、减少网络通信的数据量。客户端把需要进行对比的配置按配置项进行分片,每个分片的大小是3000项。

2分阶段进行对比和更新。

这两个优化的核心目的是去减少网络通信中数据包的大小。把一次大数据包的通信拆分成了多个小数据包的通信。

先这样理解吧,我自己去nacos官网没有找到这个优化的介绍。

2 使用过程

Environment代表了应用的运行时环境,.nacos配置变更后,environment对象中能自动同步变更的数据,可通过其String getProperty(String key)

2.1 配置依赖

        <!--nacos-discovery  注册中心依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- nacos-config 配置中心依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>

2.2 . 配置Nacos服务器地址

可以在application.yml 配置或者推荐在nacos 配置,再application.yml导入

spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848

2.3 创建配置文件

nacos:我就先用之前storage.yml

新增配置:比如abcd.url

application.yml 使用导入

2.4 使用配置

测试demo1:Environment热更新

使用之前demo:

storage 工程StorageController 引入 Environment,新增测试方法:/getUrl
	@Autowiredprivate Environment environment;
//@GetMapping("/getUrl")public String getUrl(){logger.info("getUrl");return environment.getProperty("abcd.url");}

修改nacos 后,不重启应用,直接重新调用接口。

demo2:@Value+@RefreshScope热更新

其余不变。

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

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

相关文章

第100+33步 ChatGPT学习:时间序列EMD-ARIMA-LSTM模型

基于Python 3.9版本演示 一、写在前面 上一节&#xff0c;我们学了经验模态分解&#xff08;Empirical Mode Decomposition&#xff0c;EMD&#xff09;。 如同结尾所说&#xff0c;“那么&#xff0c;做这些分解有什么作用呢&#xff1f;有大佬基于这些分解出来的序列分别作…

Docker创建一个mongodb实例,并用springboot连接 mongodb进行读写文件

一、通过Docker 进行运行一个 mongodb实例 1、拉取镜像 docker pull mongo:5.0.5 2、创建 mongodb容器实例 docker run -d --name mongodb2 \-e MONGO_INITDB_ROOT_USERNAMEsalaryMongo \-e MONGO_INITDB_ROOT_PASSWORD123456 \-p 27017:27017 \mongo:5.0.5 3、进入容器&am…

12-2周 周总结

上周主要工作在英语六级&#xff0c;其它暂无进展 新的一周任务安排如下: ① 读完四篇重要文献论文 ② 搭建完云平台 ③ 整理小论文雏形 ④ 学习侧线系统代码 ⑤ 复习应用数理统计 前半部分 ⑥ springspringboot源码部分完结

云计算HCIP-OpenStack04

书接上回&#xff1a; 云计算HCIP-OpenStack03-CSDN博客 12.Nova计算管理 Nova作为OpenStack的核心服务&#xff0c;最重要的功能就是提供对于计算资源的管理。 计算资源的管理就包含了已封装的资源和未封装的资源。已封装的资源就包含了虚拟机、容器。未封装的资源就是物理机提…

【蓝桥杯选拔赛真题93】Scratch青蛙过河 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 Scratch青蛙过河 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 Scr…

Elasticsearch 7.x入门学习-Spring Data Elasticsearch框架

1 Spring Data框架 Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问&#xff0c;并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷&#xff0c;并支持 map-reduce 框架和云计算数据服务。 Spring Data 可以极大的简化 JPA的写法&#xff0c;…

OpenCV实验篇:识别图片颜色并绘制轮廓

第三篇&#xff1a;识别图片颜色并绘制轮廓 1. 实验原理 颜色识别的原理&#xff1a; 颜色在图像处理中通常使用 HSV 空间来表示。 HSV 空间是基于人类视觉系统的一种颜色模型&#xff0c;其中&#xff1a; H&#xff08;Hue&#xff09;&#xff1a;色调&#xff0c;表示颜色…

MySql5.7安装、配置最新版

网上有很多的安装教程&#xff0c;但是有很多同学找不到历史安装包&#xff0c;而且官网变动比较大&#xff0c;我就直接给安装包了&#xff0c;下载 这个是安装包msi下载&#xff0c;可以参考下面的 MySQL详细安装教程&#xff0c;关于msi版和zip版详解&#xff0c;Windows …

ISP算法之坏点校正DPC(二):Verilog硬件实现与仿真

DPC的算法讲解和MATLAB仿真参考上一节&#xff1a; ISP算法之坏点校正DPC(一)&#xff1a;MATLAB仿真验证-CSDN博客 本节讲解Verilog的硬件实现与仿真 行缓存设计 DPC算法是基于窗口邻域的像素级别算法&#xff0c;因此需要对实时到来的视频流进行行缓存&#xff0c;行缓存…

UE5制作倒计时功能

设置画布和文本 文本绑定 格式化时间 转到事件图表&#xff0c;计算时间&#xff0c;时间结束后面的事件可以按自己需求写 进入关卡蓝图&#xff0c;添加倒计时UI

在Spring Boot中的实现国际化(i18n)

1.什么是国际化&#xff08;i18n&#xff09;&#xff1f; 国际化&#xff08;Internationalization&#xff0c;简称i18n&#xff09;是指在软件应用中支持多种语言和文化的能力。通过国际化&#xff0c;应用可以根据用户的语言和地区设置&#xff0c;动态地显示不同的文本内…

大模型的构建与部署(3)——数据标注

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl1. 数据标注的重要性 1.1 增强数据可解释性 数据标注通过为原始数据添加标签或注释,显著增强了数据的可解释性。在机器学习和深度学习领域,模型的训练依赖于大量带标签的数据。这些标签不仅帮助…

【考前预习】4.计算机网络—网络层

往期推荐 【考前预习】3.计算机网络—数据链路层-CSDN博客 【考前预习】2.计算机网络—物理层-CSDN博客 【考前预习】1.计算机网络概述-CSDN博客 目录 1.网络层概述 2.网络层提供的两种服务 3.分类编址的IPV4 4.无分类编址的IPV4—CIDR 5.IPV4地址应用规划 5.1使用定长子…

需求管理(尊享版)

需求管理 由于需求是正在构建的系统必须符合的事务&#xff0c;而且符合某些需求决定了项目的成功或失败&#xff0c;因此找出需求是什么&#xff0c;将它们记下来&#xff0c;进行组织&#xff0c;并在发生变化时对它们进行追踪&#xff0c;这些活动都是有意义的。 需求管理…

前后端跨域问题(CROS)

前端 在src中创建util文件&#xff0c;写request.js文件&#xff1a; request.js代码如下&#xff1a; import axios from axios import { ElMessage } from element-plus;const request axios.create({// baseURL: /api, // 注意&#xff01;&#xff01; 这里是全局统一加…

【python从入门到精通】-- 第六战:列表和元组

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;重生之我在学Linux&#xff0c;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持…

操作系统课后习题2.2节

操作系统课后习题2.2节 第1题 CPU的效率指的是CPU的执行速度&#xff0c;这个是由CPU的设计和它的硬件来决定的&#xff0c;具体的调度算法是不能提高CPU的效率的&#xff1b; 第3题 互斥性&#xff1a; 指的是进程之间的同步互斥关系&#xff0c;进程是一个动态的过程&#…

openlane

openlane数据集&#xff0c;lane3d_1000里训练集157807张图片&#xff0c;测试集39981张图&#xff0c;md太多了

在pycharm2024.3.1中配置anaconda3-2024-06环境

version: anaconda3-2024.06-1 pycharm-community-2024.3.1 1、安装anaconda和pycharm 最新版最详细Anaconda新手安装配置环境创建教程_anaconda配置-CSDN博客 【2024最新版】超详细Pycharm安装保姆级教程&#xff0c;Pycharm环境配置和使用指南&#xff0c;看完这一篇就够了…

深度解读:Top14金融顶刊

作者Toby&#xff1a;来源&#xff1a;Python风控模型&#xff0c;Top14金融顶刊 各位同学好&#xff0c;我是Toby老师&#xff0c;今天为大家介绍金融风控领域的顶级学术期刊&#xff0c;用于小论文发布平台参考。 金融风控领域内有许多顶级学术期刊&#xff0c;它们发表高质…