article cover

Nacos源码学习计划-Day18-配置中心-集群-集群节点间如何同步配置信息 技术文档

在之前的内容中,我们知道了客户端通过NacosPropertySourceLocator在SpringCloud读取配置的拓展点上进行拓展从而读取Nacos远端配置,Nacos服务端通过ConfigService进行配置发布,ConfigWorker利用线程池进行定期的HTTP请求从而拥有感知配置更新的能力,实现配置的动态更新。 那么单点上的配置中心的比较核...
ZealSinger 发布于 
article cover

Nacos源码学习计划-Day17-配置中心-配置变化推送与客户端感知配置变化 技术文档

上一章中我们讨论了Nacos客户端是如何加载和读取远程配置,通过源码了解到了Nacos远程配置的优先级和读取顺序以及读取位置在磁盘而不是数据库 在上一章最后,我们也说到了,直接修改数据库是无法被感知的,那么今天探讨的内容是:Nacos中,服务端配置变化之后,是如何通知的客户端?客户端又是如何感知到这个变化的呢? 在讲解配置中心第一个章节的时候,在源码中我们看...
ZealSinger 发布于 
article cover

Nacos源码学习计划-Day16-配置中心-加载远程配置源码解析 技术文档

在上一节中,我们看到了Nacos读取配置中心内容的相关代码locate方法部分内容如下 // 加载共享配置文件loadSharedConfiguration(composite);// 加载额外配置文件loadExtConfiguration(composite);// 加载自身应用配置文件loadApplicationConfiguration(compo...
ZealSinger 发布于 
article cover

Nacos源码学习计划-Day15-配置中心-Nacos客户端如何读取的远端配置 技术文档

前面的内容我们讲解了Nacos作为注册中心的相关功能,服务的注册,更新,获取,删除,集群中的同步等内容都有讲解,从现在开始,我们要开始接触Nacos的第二大功能板块——配置中心。 我们知道,我们在使用Nacos的时候,可以在Nacos的管理端处配置对应的配置,然后所有的注册在该Nacos上的服务都会使用该配置的内容,那么我们就可以思考...
ZealSinger 发布于 
article cover

Nacos源码学习计划-Day14-集群-Nacos中Distro协议的具体实现 技术文档

对于Distro中的相关实现,我们就不多说了,因为在之前除了专门讲Raft那篇之外,其余的所有的内容都是基于Distro协议的进行分析,比如说集群内节点健康状态同步,集群内新实例的加入如何同步等等,在这些内容中,大伙儿应该都还记得存在很多异步任务,而且这些异步任务基本都是以Distro开头,所以这里我们大致的介绍一下就行了。 背景 Distro 协议是 Na...
ZealSinger 发布于 
article cover

Nacos源码学习计划-Day13-集群-Nacos中Raft协议的具体实现 技术文档

这里我们尝试走进Nacos底层对这Raft协议的实现和使用进行进一步的学习和了解,内容很多,但是考虑到Nacos在后期版本中转而使用JRaft了,这里大家尽量看,实在看不下去了解即可。
ZealSinger 发布于 
article cover

Nacos源码学习计划-Day12-集群-CAP原则和Raft协议和Distro协议理论前提 技术文档

Nacos的内核设计中,一开始的目标就是尽可能减少用户部署和运维的成本,即用户只需要一个程序包就能迅速的部署和使用Nacos单机服务和集群服务(来自阿里官方电子书《Nacos架构与原理》)。但是我们知道,Nacos本身是一个需要数据存储的一个组件,也就是说Nacos内部实现数据存储。如果是单机服务还好说,在Nacos内部内嵌关系型数据即可,但是在集群环境下,...
ZealSinger 发布于 
article cover

Nacos源码学习计划-Day11-集群-集群新增节点进行已有数据的同步 技术文档

当我们为Nacos集群中新增一个Nacos节点,以及某个Nacos节点宕机后需要重启,这两个情况下都会需要同步其他节点的数据,所以这次我们围绕这个需求,来看看Nacos中如何实现的 找到主线 从这个需求来看,肯定是服务启动的时候就需要去进行同步,所以肯定关键点肯定在于一些初始化,init,构造方法中,所以这次的找主线任务是比较难的,只能通过大量阅读源码或者搜...
ZealSinger 发布于 
article cover

Nacos源码学习计划-Day10-集群-集群节点健康状态变更数据同步 技术文档

当我们搭起Nacos集群的时候,我们在Nacos的Web管理页面可以看到“集群管理”栏目,在这里面,列出集群内节点的IP,状态,以及元数据 // 元数据结构如下 {    // 最后刷新时间    "lastRefreshTime": 1674093895774,    //...
ZealSinger 发布于 
article cover

Nacos源码学习计划-Day09-集群-新增微服务实例 技术文档

今天,我们来学习Nacos集群环境下,如果某个微服务注册到了某个Nacos节点上,即新增了一个服务实例的时候,是如何在集群内进行同步的。 这一段的实现逻辑在Nacos1.4中设计比较麻烦,所以本次的内容可能会比较绕。这里采用总分的方式,也就是我们先直接上一个总结设计描述,然后再查看每个部分的源码 新增实例整体逻辑描述 Nacos 是利用了双层内存队列 + 异...
ZealSinger 发布于