当前位置:网站首页 > 云计算与后端部署 > 正文

nacos配置中心(Nacos配置中心配置变更,客户端自动刷新吗)



        目录      

              

        

        


配置中心是SpringCloud系统中常见的一种技术方案,配置中心区别于传统的各个系统当中分散的配置方式,它对系统中的配置文件进行集中式、统一管理。

②、当配置信息发生变动时,修改实时生效,无需要重新重启服务器,可以实时去调整相关对应的业务。

最近在做技术调研形成落地方案的时候,突然想到了nacos的动态配置刷新,于是想去看下nacos动态配置到底怎么实现的,今天抽出点时间看了下nacos配置中心源码实现。

所以,本篇文章就介绍nacos是怎么扩展spring实现自己的配置数据动态加载的。

首先第一点需要知道的是nacos动态配置从nacos角度来看核心是通过长轮询(LongPolling)来实现的,我们不妨先从nacos角度来看其长轮询实现方式,然后再看和spring的整合。

所谓长轮询,就是服务器接收到请求后,hold连接一段时间暂时不返回消息,直到进行相关处理完毕后才返回响应信息并关闭连接,客户端接收到响应信息后,进行相关处理,处理完毕后再向服务器发送新的请求。

所以在一次nacos客户端连接服务端当中,服务端断开连接也就有了两种情况:

①、服务端数据发生了变化,需要推送到客户端,向客户端推送数据,断开连接。

②、在一段时间内没有数据发生改变,超时断开连接。

这里我们先从类ClientWorker的构造方法看起,因为下面讲的和spring集成部分都是在类ClientWorker的构造方法的上层部分,等说到和spring继承的时候我们再衔接到类ClientWorker的构造方法这个地方。

然后接下来的for循环核心执行的就是通知监听器刷新nacos数据。

我们直接看cacheData.checkListenerMd5()方法的执行逻辑。

遍历所有的监听器,最终执行safeNotifyListener()这个方法很显然这个方法中创建一个Runnable任务,最终通过监听器Listener里面的线程池或者直接执行这个Runnable任务。

所以,我们接下来重点看Runnable任务执行的逻辑。

这个Runnable任务里面核心逻辑是这行代码。

①、nacosRefreshHistory通过链表的方式记录nacos数据变更历史

②、通过ApplicationContext.publishEvent()方法刷新容器

很显然,我们想看的逻辑正是刷新容器这行代码。

然后我在NacosConfigManager这个类的构造方法打了个debug断点,因为这个类就是spring容器启动的时候第一次初始化创建nacos需要的一些组件、开启定时任务等核心逻辑。

NacosConfigManager是创建nacos长轮询的定时任务,定时执行长轮询的定时任务,是nacos配置更新的启动点。

NacosContextRefresher是和spring整合的桥梁,实现了ApplicationContextAware用来获取ApplicationContext,实现了ApplicationListener用来通知spring发布时间通知。

在发布事件通知的逻辑中就注册了nacos的监听器。

到此这篇nacos配置中心(Nacos配置中心配置变更,客户端自动刷新吗)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • pcp文件是什么意思(pcp后缀是什么文件)2025-07-06 21:45:10
  • 操作系统课后答案第二版(操作系统第二版课后答案张成姝)2025-07-06 21:45:10
  • 电脑软件安装包后缀名(电脑app安装包后缀)2025-07-06 21:45:10
  • 模型部署工程师(模型部署阶段的意义)2025-07-06 21:45:10
  • 手机软件后缀名(手机软件后缀名叫什么)2025-07-06 21:45:10
  • 安装软件后缀-ce(安装软件后缀字母)2025-07-06 21:45:10
  • 电脑安装软件后缀名(电脑安装程序后缀名)2025-07-06 21:45:10
  • 操作系统课件ppt(操作系统课后)2025-07-06 21:45:10
  • 服务器部署springboot项目放哪个文件(springboot文件服务器搭建)2025-07-06 21:45:10
  • yarn命令查看队列(查看yarn集群的默认端口号)2025-07-06 21:45:10
  • 全屏图片