vlambda博客
学习文章列表

nacos源码-服务注册-server

上篇分析了client端的注册以及维护serviceInfo源码,现在来分析server端的。



源码分析


1、实例的信息维护和注册主要在InstanceController类中。


2、ServiceManager负责维护本地(缓存)的service信息,负责service的管理,包括client的和cluster的信息同步,里面有以下主要属性

nacos源码-服务注册-server


3、注册服务的源码如下:首先创建一个service


为空就先在本地创建一个service

nacos源码-服务注册-server

创建service信息,同时初始化心跳监听和一致性协议数据监听

nacos源码-服务注册-server

一致性协议数据监听,监听者是service

nacos源码-服务注册-server

启动心跳线程,5s一次循环

nacos源码-服务注册-server


4、然后创建instance


通过一致性服务创建实例

nacos源码-服务注册-server


以distro协议举例

nacos源码-服务注册-server

放入cache,通知订阅者

nacos源码-服务注册-server

notifier实际上是一个单独线程,内部是一个死循环,一直take task

nacos源码-服务注册-server

回调的就是之前service init时注册的实例所属的service

nacos源码-服务注册-server

service中的监听方法


nacos源码-服务注册-server

5、添加实例时同步给其他cluster节点的源码


创建同步的延时任务

nacos源码-服务注册-server


nacos源码-服务注册-server


nacos源码-服务注册-server


nacos源码-服务注册-server

最终走的put distro/datum接口

nacos源码-服务注册-server


6、其他node节点收到消息之后的处理


DistroController中的put distro/datum接口

nacos源码-服务注册-server



DistroConsistencyServiceImpl收到协议数据,触发回调,即上面的service中的onChange方法