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

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



Nacos作为配置中心,必然需要保证服务节点的高可用性,那么Nacos是如何实现集群的呢?

下面这个图,表示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配置中心集群原理的资料请关注脚本之家其它相关文章!

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

版权声明


相关文章:

  • pivas静脉配置中心工作流程(pivas静脉配置中心ppt)2025-03-21 10:45:09
  • Nacos配置中心死活连接不上(nacos配置中心不生效)2025-03-21 10:45:09
  • 肃州区人力资源配置中心单位邮政编码(肃州区人力资源配置中心单位邮政编码是多少)2025-03-21 10:45:09
  • 城厢区公共资源配置中心(城厢区公共资源交易中心)2025-03-21 10:45:09
  • 静脉药物配置中心配置人员工作职责(静脉药物配置中心工作流程)2025-03-21 10:45:09
  • ewma模型推导(ewma模型的金融含义)2025-03-21 10:45:09
  • 静脉配置中心工作流程及注意事项(静脉配置中心的工作内容)2025-03-21 10:45:09
  • 静脉配置中心工作流程(静脉配置中心工作流程图)2025-03-21 10:45:09
  • pivas静脉配置中心(pivas静脉配置中心工作总结)2025-03-21 10:45:09
  • 静脉配置中心是哪个部门(静脉配置中心工作流程及注意事项)2025-03-21 10:45:09
  • 全屏图片