当前位置:网站首页 > 去中心化金融(DeFi) > 正文

nacos配置中心热更新原理(nacos配置中心集群)



现如今市面上注册中心的轮子很多,我实际使用过的就有三款:Eureka、Nacos,Zookeeper、Consul 由于当前参与Nacos 集群的维护和开发工作,期间也参与了 Nacos 社区的一些开发和 bug fix 工作,过程中对 Nacos 原理有了一定的积累,今天给大家分享一下 Nacos 动态服务发现的原理。

整个服务注册与发现过程,都离不开通讯协议,在1.x的 Nacos 版本中服务端只支持 http 协议,后来为了提升性能在2.x版本引入了谷歌的 grpc,grpc 是一款长连接协议,极大的减少了 http 请求频繁的连接创建和销毁过程,能大幅度提升性能,节约资源。据官方测试,Nacos服务端 grpc 版本,相比 http 版本的性能提升了9倍以上。

 
  

执行补偿定时任务RedoScheduledTask

 
  

服务端数据同步(Distro协议)
Nacos SDK只会与服务端某个节点建立长连接,当服务端接受到客户端注册的实例数据后,还需要将实例数据同步给其他节点。Nacos自己实现了一个一致性协议名为Distro,服务注册的时候会触发Distro一次同步,每个Nacos节点之间会定时互相发送Distro数据,以此保证数据最终一致。关于Distro协议更多信息可以阅读《Nacos 自研Distro协议》
服务实例上线推送
Nacos服务端收到服务实例数据后会将服务的最新实例列表通过grpc推送给该服务的所有订阅者。
服务注册过程源码时序图
整理了一下服务注册过程整体时序图,对源码实现感兴趣的可以按照根据这个时序图view一下源码。
在这里插入图片描述
















 
  

移除客户端注册的服务实例

 
  
 
  

然后发布订阅事件。

 
  

服务端自己消费订阅事件,并且推送给订阅的客户端最新的服务实例数据。

 
  

推送方式
前面说了服务的注册和订阅都会发生推送(服务端->客户端),那推送到底是如何实现的呢?
在早期的Nacos版本,当服务实例变化,服务端会通过udp协议将最新的数据发送给客户端,后来发现udp推送有一定的丢包率,于是新版本的Nacos支持了grpc推送。Nacos服务端会自动判断客户端的版本来选择哪种方式来进行推送,如果你使用1.4.2以前的SDK进行注册,那Nacos服务端会使用udp协议来进行推送,反之则使用grpc。
推送失败重试
当发送推送时,客户端可能正在重启,或者连接不稳定导致推送失败,这个时候Nacos会进行重试。Nacos将每个推送都封装成一个任务对象,放入到队列中,再开启一个线程不停的从队列取出任务执行,执行之前会先删除该任务,如果执行失败则将任务重新添加到队列,该线程会记录任务执行的时间,如果超过1秒,则会记录到日志。
推送部分源码
添加推送任务到执行队列中。
















 
  

推送任务PushExecuteTask 的执行。

 
  

执行推送任务线程InnerWorker 的执行。

 
  
 
  

本篇文章向大家介绍Nacos服务发现的基本概念和核心能力以及实现的原理,旨在让大家对Nacos的服务注册与发现功能有更多的了解,做到心中有数。

到此这篇nacos配置中心热更新原理(nacos配置中心集群)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • apollo配置中心(Apollo配置中心是基于文件吗)2026-04-12 17:45:04
  • 静脉配置中心的洁净级别(静脉配置中心净化要求)2026-04-12 17:45:04
  • pivas静脉配置中心人员配置要求(静脉配置中心工作流程ppt)2026-04-12 17:45:04
  • 配置中心系统(配置中心是什么)2026-04-12 17:45:04
  • apollo配置中心(apollo配置中心是哪个公司的)2026-04-12 17:45:04
  • 肃州区人力资源配置中心地址(肃州区人力资源市场信息平台)2026-04-12 17:45:04
  • Apollo配置中心如何做到更新生效(apollo配置中心动态更新)2026-04-12 17:45:04
  • 配置中心有哪些(配置中心有哪些组成)2026-04-12 17:45:04
  • 华为机考挂了怎么办(华为的机考怎么过去的)2026-04-12 17:45:04
  • nacos配置中心热更新原理(nacos配置中心持久化)2026-04-12 17:45:04
  • 全屏图片