nacos源码-服务注册-server
上篇分析了client端的注册以及维护serviceInfo源码,现在来分析server端的。
源码分析
1、实例的信息维护和注册主要在InstanceController类中。
2、ServiceManager负责维护本地(缓存)的service信息,负责service的管理,包括client的和cluster的信息同步,里面有以下主要属性
3、注册服务的源码如下:首先创建一个service
为空就先在本地创建一个service
创建service信息,同时初始化心跳监听和一致性协议数据监听
一致性协议数据监听,监听者是service
启动心跳线程,5s一次循环
4、然后创建instance
通过一致性服务创建实例
以distro协议举例
放入cache,通知订阅者
notifier实际上是一个单独线程,内部是一个死循环,一直take task
回调的就是之前service init时注册的实例所属的service
service中的监听方法
5、添加实例时同步给其他cluster节点的源码
创建同步的延时任务
最终走的put distro/datum接口
6、其他node节点收到消息之后的处理
DistroController中的put distro/datum接口
DistroConsistencyServiceImpl收到协议数据,触发回调,即上面的service中的onChange方法