Nacos 如何实现配置文件动态更新的

Nacos采用的是一个长轮询的方式,向Nacos Server 端去发起配置更新查询的这样一个功能。
长轮询:客户端发起一次轮询请求到服务端,当服务器端配置没有任何变更的时候,这个连接会一直打开,直到服务端有配置变更或者连接超时之后才返回。
Nacos Client端需要去获取服务端变更的配置,前提是需要一个比较,也就是说用客户端本地的配置文件信息和服务端的配置文件进行一个比较。
一旦发现和服务端的配置有差异,就表示本地配置文件需要更新(需要把更新的配置拉到本地)在这个过程中有可能因为客户端的配置比较多,导致比较的时间比较长,使得配置同步的效率非常低。于是Nacos针对这一场景做了两个优化:
1.减少网络通信的数据量。客户端把需要去进行比较的配置进行分片,每一个分片大小是3000(也就是说每一次最多拿3000个配置去Nacos Server端去进行比较)
2.分阶段进行比较和更新。第一个阶段客户端把这3000个配置的key以及对应的value 的一个md5值拼接成一个字符串,然后发送到Nacos Server端去进行比较。
服务端会去逐个比较这些配置里面的md5的一个值,把需要更新的key 返回给客户端。客户端拿到这个变更的key再循环去逐个调用服务端去获取这个key的value。

这两个优化的核心目的是减少网络通信数据包的大小。把一次大的数据包的一个通信拆分成了多个小的数据包的一个通信,虽然会增加网络通信的次数,
但是对于整个性能提升是非常大的。最后再加上长轮询的方式,既减少了pull 的轮询次数,又利用了长轮询的优势很好的去实现了配置的动态更新的一个同步功能。

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

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

相关文章

node.js快速入门-day03

个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:给自己一个梦想,给世界一个惊喜。 🎅**学习目标: 坚持每一次的学习打卡 文章目录 web服务器创建…

力扣hot100:34. 在排序数组中查找元素的第一个和最后一个位置(二分查找的理解)

我们知道使用二分查找能找到值所在的位置。假如我们在找到值后仍然不断的更新指针会发生什么?我们可以利用这一点来找到最左边的以及最右边的值。 如果当nums[mid]target时,使得 rightmid-1,那么最终会使得target在right的右边。 如果当nums[…

海外媒体宣发套餐推广攻略实现品牌全球化-华媒舍

如今,在全球经济一体化的浪潮下,品牌全球化已成为企业成功的重要因素之一。海外市场作为一个巨大而具有潜力的机会,吸引着越来越多的企业前往探索。而在海外市场的推广过程中,海外媒体宣发套餐成为了重要的推广方式之一。本文将为…

Linux系统优化及性能调优

目录 一、基本优化 1. SELinux和防火墙优化 1.1 selinux概述 1.2 selinux三种工作模式 1.3 切换selinux模式 1.4 防火墙概述 1.5 firewalld管理工具 2. 自启动服务优化 2.1 Systemd 2.2 SysVinit 3. 禁用超级管理员 4. 普通用户提权 5. 使用国内yum源 5.1 配置阿…

量化交易入门(一)学习量化交易需要掌握哪些知识

学习量化(Quantitative Analysis),特别是在金融领域的量化分析或量化交易,需要掌握以下几个方面的知识: 数学和统计学:高等数学(微积分、线性代数等)、概率论与数理统计是量化分析的…

【S5PV210_视频编解码项目】裸机开发:实现按键的外部中断处理

加粗样式本文所作内容: 基于S5PV210芯片实现按键的外部中断处理程序,搭建中断处理流程框架 S5PV210对于中断处理的操作流程 1 外部中断得到触发: 1)外部中断在初始化阶段得到使能 2)外界达到了外部中断的触发条件 …

24考研数学最大教训❗️660/880过时了?

我没看错吧,说660题和880题过时了? 660题和880题好好用,这俩很经典不会过时。 660题是客观题训练必刷的一本题集,而880是强化阶段非常好的一本综合性题集。我本身在考研的时候使用的也是这两本题集,所以对这两本题集…

如何学习一个大型分布式Java项目

前言 很多同学在没有实习经验的时候看到一个多模块分布式项目总是有一种老虎吃天的无力感,就像我刚毕业去到公司接触项目的时候一样,模块多的夸张,想学都不知道从哪开始学,那么我们拿到一份代码后如何从头开始学习一个新项目呢。…

pyinstaller使用笔记

1. 简介 pyinstaller是一个第三方库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个 独立文件方便传递和管理。 PyIns…

Oracle Primavera Analytics 是什么,与P6的关系?

前言 Oracle Primavera P6 Analytics 是与P6有关的一个相对较新的模块,Primavera 用户社区在很大程度上尚未对其进行探索。 那么它到底有什么作用呢? 通过了解得知它旨在通过深入了解组织的项目组合绩效,帮助高级管理层对其项目组合做出更好…

「Linux系列」Linux 系统目录结构/忘记密码解决方法

文章目录 一、Linux 系统目录结构Linux系统目录结构的概念案例 二、Linux 忘记密码解决方法方法一:使用root用户重置密码方法二:使用单用户模式重置密码方法三:使用恢复模式或救援模式案例:使用CentOS的救援模式重置密码 三、相关…

PE文件格式知识点汇总

简单概述:可执行文件之所以被操作系统加载且运行,是因为它们遵循相同的规范,而这个规范正是PE文件格式所确定。 1、PE文件格式的定义 PE文件格式:PE(Portable Executable)是win32平台下可执行文件遵守的数…

Python进阶学习(6)异常

文章目录 异常1.异常的定义2.异常错误3.异常处理(捕捉异常)4.assert断言5. 定义异常 异常 1.异常的定义 什么是异常:报错 也可以去链接资源访问某个网站时,中断程序,也叫异常 捕捉异常:因为我们在程序编…

MySQL | 库的操作 | 表的操作

目录 1. 库的操作 1.1. 创建数据库 1.2. 字符集和校验规则 1.2.1. 查看系统默认字符集以及校验规则 1.2.2. 查看数据库支持的字符集 1.2.3. 查看数据库支持的字符校验规则 2. 操作数据库 2.1. 查看数据库 2.2. 显示创建语句 2.3. 修改数据库 2.4. 数据库的删除 2.4.…

维基百科推广秘诀13个方法助你成为行业领导者-华媒舍

维基百科(Wikipedia)作为全球最大、最权威的在线百科全书,拥有海量的知识内容,被广大用户广泛使用。对于任何一个领域的从业者来说,建立自己的维基百科页面,无疑是提升行业影响力的重要手段。本文将向您介绍…

Linux学习(4)——使用编辑器

1.gedit编辑器 简单易懂,依赖图形界面。可以使用ctrlc ctrlv等快捷键,ctrls进行保存,与windows系统中相类似。 2.vi/vim编辑器 vi/vim可以直接通过控制台的终端完成文本的编辑,不依赖图形界面,使用范围更广。它的编辑…

DataX-数据迁移Oracle到Mysql-ETL工具

一、安装 https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md 1、直接下载DataX工具包:DataX下载地址 下载后解压至本地某个目录,进入bin目录,即可运行同步作业: $ cd {YOUR_DATAX_HOME}/…

Redis数据结构对象之字符串对象

字符串对象 字符串对象的编码可以是int、raw或者embstr 如果一个字符串对象保存的是整数值,并且这个整数值可以用long类型来表示,那么字符串对象会将整数值保存在字符串对象结构的ptr属性里面(将void *转换成long),并且将字符串对象的编码设…

为啥这么做实现不了优雅关闭服务,gin 项目

所谓的优雅关闭服务就是 在关闭服务时,服务不再监听新的请求,并且可以将之前的请求处理完毕。 细节请看 专栏博客Gin项目实战09-优雅关闭服务

【Cute】MMA抽象代码理解 c2d9bff3d88846eb8c523fb722166bc9

【Cute】MMA抽象代码理解 导读: cute 之 Layoutcute Layout 的代数和几何解释cute 之 Tensorcute 之 MMA抽象cute 之 简单GEMM实现 阅读本文前建议先读上面reed大神的数篇文章,文本逻辑主要是针对具体的代码,记录一下自己学习过程中的理解…