2025年nacos配置中心原理(nacos配置中心集群)

nacos配置中心原理(nacos配置中心集群)div id navCategory div p Nacos 作为配置中心 必然需要保证服务节点的高可用性 那么 Nacos 是如何实现集群的呢 p 下面这个图 表示 Nacos 集群的部署图 Nacos 作为配置中心的集群结构中 是一种无中心化节点的设计 由于没有主从节点 也没有选举机制 所以为了能够实现热备

大家好,我是讯享网,很高兴认识大家。



 <div id="navCategory"></div><p>Nacos作为配置中心,必然需要保证服务节点的高可用性,那么Nacos是如何实现集群的呢?</p> 

讯享网

下面这个图,表示Nacos集群的部署图。


讯享网

Nacos作为配置中心的集群结构中,是一种无中心化节点的设计,由于没有主从节点,也没有选举机制,所以为了能够实现热备,就需要增加虚拟IP(VIP)。

Nacos的数据存储分为两部分

  • Mysql数据库存储,所有Nacos节点共享同一份数据,数据的副本机制由Mysql本身的主从方案来解决,从而保证数据的可靠性。
  • 每个节点的本地磁盘,会保存一份全量数据,具体路径:/data/program/nacos-1/data/config-data/${GROUP}.

在Nacos的设计中,Mysql是一个中心数据仓库,且认为在Mysql中的数据是绝对正确的。 除此之外,Nacos在启动时会把Mysql中的数据写一份到本地磁盘。

这么设计的好处是可以提高性能,当客户端需要请求某个配置项时,服务端会想Ian从磁盘中读取对应文件返回,而磁盘的读取效率要比数据库效率高。

当配置发生变更时:

  • Nacos会把变更的配置保存到数据库,然后再写入本地文件。
  • 接着发送一个HTTP请求,给到集群中的其他节点,其他节点收到事件后,从Mysql中dump刚刚写入的数据到本地文件中。

另外,NacosServer启动后,会同步启动一个定时任务,每隔6小时,会dump一次全量数据到本地文件

当配置发生修改、删除、新增操作时,通过发布一个事件。

配置数据变更事件,专门有一个监听器AsyncNotifyService,它会处理数据变更后的同步事件。

数据同步的请求地址为,task.url=http://192.168.8.16:8848/nacos/v1/cs/communication/dataChange?dataId=log.yaml&group=DEFAULT_GROUP

dumpService.dump用来实现配置的更新,代码如下

当前任务会被添加到DumpTaskMgr中管理。

TaskManager.addTask, 先调用父类去完成任务添加。

在这种场景设计中,一般都会采用生产者消费者模式来完成,因此这里不难猜测到,任务会被保存到一个队列中,然后有另外一个线程来执行。

TaskManager的父类是NacosDelayTaskExecuteEngine,

这个类中有一个成员属性protected final ConcurrentHashMap<Object, AbstractDelayTask> tasks;,专门来保存延期执行的任务类型AbstractDelayTask.

在这个类的构造方法中,初始化了一个延期执行的任务,其中具体的任务是ProcessRunnable.

读取数据库的最新数据,然后更新本地缓存和磁盘

以上就是Nacos配置中心集群原理及源码分析的详细内容,更多关于Nacos配置中心集群原理的资料请关注脚本之家其它相关文章!


小讯
上一篇 2025-05-07 12:01
下一篇 2025-06-01 17:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/161054.html