相比研究Nacos客户端注册原理源码实现,服务端相对复杂的多,我们这节课主要带大家阅读服务端注册中心处理及注册信息同步分发的源码及实现原理,与此不相关的内容,将会一带而过。本节课主要以视频为主,文档为辅,可以先看下最后面的两张大图,让大脑对nacos有个清晰的认识
# 如果下载不下来,可以关注“乐哥聊编程” 领取
git clone https://gitee.com/mirrors/Nacos.git
导入IDEA之后,需要安装相应的插件
spring.sql.init.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.64.2:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root
# /Users/lglbc/code/open/nacos/clusters/{端口}/conf/cluster.conf
192.168.64.1:8844
192.168.64.1:8846
192.168.64.1:8848
-Dserver.port=8844 -Dnacos.home=/Users/lglbc/code/open/nacos/clusters/8844
-Dserver.port=8846 -Dnacos.home=/Users/lglbc/code/open/nacos/clusters/8846
-Dserver.port=8848 -Dnacos.home=/Users/lglbc/code/open/nacos/clusters/8848
如果依赖解决没有报错之后,可以直接运行 naming-console-Nacos项目
该处理主要是用来处理来自客户端的GRPC请求,根据不同的请求类型,分发给不同的处理器,主要包括实例注册请求和注册信息分发请求,其它的在这里不做讨论
主要用来发布事件,因为在nacos中几乎所有处理都是基于异步线程处理。会根据不同业务获取不同事件发布器
主要用来负责消费NotifyCenter 发布出来的事件,只处理自己支持的事件
在客户端与服务建立连接后,客户端发送过来的请求GrpcRequestAcceptor,都会由这个类处理进行统一分发
负责维护本地注册信息变更及推送变更到订阅者
协助负责事件分发
处理注册信息分发到其它cluter的(如果存在cluster)及消费其它cluster同步给自己的信息
由上面可以知道,syncData发出的是DistroDataRequests所以我们现在需要去看下 DistroDataRequestHandler如何处理请求
从代码中,可以看出他也是按照不同任务进行分发,我们这里只看删除/添加
https://www.processon.com/view/link/649ee50306e86008b371f2ec