Nacos注册中心之概要设计
本文转载自微信公众号「捉虫大师」,册中作者捉虫大师。概设转载本文请联系捉虫大师公众号。册中
前言
在之前的概设文章中分析了Nacos配置中心,配置中心的册中核心是配置的创建、读取、概设推送。册中
注册中心的概设核心比配置中心多一个服务探活模块,他俩的册中相似度非常高,甚至阿里内部的概设注册中心就叫ConfigServer。
Nacos注册中心打算分成几个模块来分析,册中本文重点在于概要设计,概设基于2.0.0版本。册中
环境搭建
用Nacos的概设源码来搭建源码阅读和调试环境,可参考《Nacos配置中心模块详解》 Nacos调试环境搭建部分。册中
其中 JVM参数可以指定只启动Naming模块,也可以不指定,默认全都启动。
example模块下将NamingExample复制一份进行测试。
设计概要
服务发现模型
客户端视角的服务发现模型(注意:服务端视角的模型定义与客户端视角有区别)包含以下几点内容:
Service:服务 Cluster:集群 Instance:实例代码注释:We introduce a service --> cluster --> instance model, in which service stores a list of clusters, which contains a list of instances
他们的关系如下

Service

Cluster

Instance

除了上述的三层模型外,Nacos注册中心和配置中心有着一样的namespace设计,与client绑定,可隔离环境,租户。
接口设计
registerInstance:注册实例 deregisterInstance:注销实例 getAllInstances:获取一个服务的所有实例(包括不健康) selectInstances:根据条件获取一个服务的实例 selectOneHealthyInstance:根据负载均衡策略获取服务的源码库一个健康的实例 subscribe:订阅服务 unsubscribe:取消订阅服务 getServicesOfServer:根据条件分页获取所有服务交互流程
Nacos 2.0 为ephemeral不同的实例提供了两套流程:
ephemeral=false,永久实例,与server端的交互采用http请求,server节点间数据同步采用了raft协议,健康检查采用了server端主动探活的机制 ephemeral=true,临时实例,与server端的交互采用grpc请求,server节点间数据同步采用了distro协议,健康检查采用了TCP连接的KeepAlive模式临时实例的交互流程
client初始化,与server建立连接只与其中一台server节点建立长连接
client 注册服务,将serviceName+ip+port+clusterName等数据打包发送grpc请求同时客户端缓存已注册过的服务,当client与server连接断开重连时,client重新将这些数据注册到server端
server端接收到client的注册请求,将注册信息存入client对象(用于保存client的所有数据)中,并触发ClientChangedEvent、ClientRegisterServiceEvent、InstanceMetadataEvent ClientChangedEvent触发server节点之间的数据同步(distro协议) ClientRegisterServiceEvent触发更新publisherIndexes(保存service => clientId的Map InstanceMetadataEvent,处理元数据,Nacos在2.0中将元数据与基础数据拆分开,分为不同的处理流程 client订阅服务 根据serviceName、云服务器groupName、clusters信息生成key,创建eventListener,同时向server端发送订阅请求,并缓存订阅信息,用于连接断开重连后再次向server端发送信息 server端接收到client的订阅请求 将订阅信息打包为subscribers,并存入client对象中,触发ClientSubscribeServiceEvent事件 ClientSubscribeServiceEvent事件更新subscriberIndexes(保存service => clientId的Map ServiceSubscribedEvent事件会延时500ms向该client推送该服务的最新数据 反向的操作如注销、取消订阅与正向操作类似,不再赘述最后
本文从总体上分析了Nacos 2.0的模型设计、接口设计以及交互流程,读完后对Nacos的服务发现有一个整体上的认识。后续篇幅会从细节入手,如dubbo Nacos扩展、一致性协议、探活、CMDB扩展等逐一进行分析。
相关文章
- 摘要:作为新兴的数字货币,铁三角CKB(NervosCommonKnowledgeBase)已经引起了全球投资者和科技爱好者的广泛关注。CKB是建立在区块链技术上的一个去中心化公链,其独...2025-11-05
- 摘要:随着科技的进步和应用的普及,我们的笔记本电脑在使用一段时间后可能会出现各种问题,甚至导致系统崩溃。此时,重新安装操作系统成为了解决问题的必经之路。而使用U盘来进行安装则是非常便捷和...2025-11-05
戴尔装台式机系统安装系统教程(详细步骤帮你轻松完成系统安装)
摘要:在购买新的戴尔台式机后,我们通常需要自行安装系统。本教程将为大家提供详细的步骤指导,帮助大家轻松完成戴尔装台式机的系统安装。一:准备工作在开始安装系统之前,首先需要做一...2025-11-05HPU盘安装Win7系统教程(简易操作,快速安装,助你轻松享受Win7系统)
摘要:随着Windows7系统的使用广泛,不少用户想要在自己的电脑上安装这个稳定可靠的操作系统。而使用U盘进行安装是一种快速且方便的方法。本文将详细介绍如何利用HPU盘来安装Win7系统...2025-11-05电脑管家错误代码的解决方法(遇到电脑管家错误代码?别慌,教你如何解决!)
摘要:电脑管家作为一款常用的电脑优化软件,常常出现一些错误代码,给用户带来困扰。本文将为大家介绍常见的电脑管家错误代码,并给出相应的解决方法,帮助大家快速解决问题。一、错误代码3...2025-11-05- 摘要:随着移动设备的普及和功能的不断升级,人们对于充电速度和效率的需求也越来越高。作为领先的充电设备制造商,绿联与高通携手推出了绿联高通3.0快充技术,以满足用户对于快速充电的需求。本文...2025-11-05


最新评论