当前位置: 首页 > 网络应用技术

NACOS服务注册源代码分析

时间:2023-03-05 18:34:57 网络应用技术

  昨天,分析了NACOS动态配置的源代码分析。让我们看一下NACOS服务注册的相关源代码。

  普通服务注册中心通常相同,如下:

  NACOS的服务注册过程指示:

  使用NACOS的服务注册功能,您需要介绍相应的依赖性:

  根据《公约》

  来自com.alibaba.cloud.nacos.nacos.rigizationry.nacosserviceregistrygistryautoconfiguration

  Nacosautoservireregisttration类从Abstractautoservireregistration继承。查看整个继承关系,您可以看到AbstractAutoSereReRegistration实现了ApplicationListener界面

  这很容易做到。我们直接找到与事件相关的方法。最后,它决定在AbstractautautautoserereReReReregistration类中达到ApplicationEvent(WebServerinitializatizationizationizatizatienializationizationizationizationizationizationizationizationizationizationizationizationizationizationizatizationizatizationizatizationizatizationizatizationizationizatizationizationizationed事件)。代码如下:

  开始()方法的内容如下:

  此寄存器方法最终将被调用到com.alibaba.cloud.nacos.regizationry.nacosserviceregistry#注册方法如下:如下:

  它最终将致电com.alibaba.nacos.client.naming.net.namingproxy#registerservice

  此时,已经分析了启动客户端时的注册服务代码。让我们看一下服务器的处理方式。

  根据CALL/NACOS/V1/NS/实例路径,查找服务器的相应处理方法:com.alibaba.nacos.naming.controller.instancecontroller#regission

  其中,GetInstanceOperator()的实施如下:

  我们没有GRPC的方式,因此我们最终将转到com.alibaba.nacos.naming.core.instanceoperatorsrvimpl#registerinstance方法

  RegisterInstance的实施如下:

  跟踪createEmptyService()方法。您可以看到您首先尝试从ServiceMap的对象获得服务。在此SERVICEMAP中没有创建ServiceMap。您可以看到ServiceMap的数据结构是:

  好吧,返回以上Addinstance方法的实现:

  此关键定义将在以后使用,请首先记住

  此put()方法将被调用到com.alibaba.nacos.naming.consistencencenceconssistencescyserviceimpl#put

  实例是记录接口的子类

  此处的PUT方法将在com.alibaba.nacos.naming.consistence.ephemeral.distroconssisteservimpl#put methot.senceSessence中调用。

  输入方法的内容如下:

  通知对象是实现可运行接口的内部类。addTask方法的内容如下:

  其中,任务是阻止队列

  当您在这里看到时,您会发现,将命名空间键和ServiceName的钥匙放入阻止队列后,整个注册请求基本上已经结束。那么真正的服务注册在哪里?答案是在Notifier对象和istroconsistenceserviceimpl对象中。

  检查DistosisSencEscyServimpl对象的源代码。您可以找到一个init()方法。内容如下:

  实际上,这要移交给线程池进行处理,而传输对象是前面提到的通知对象,因此您只需要检查run()通知器的方法即可。

  接下来,查看hander()方法:

  它将在此处称为com.alibaba.nacos.naming.core.core.service#onChange方法

  更新方法最好理解。简而言之,注册服务放在clustermap的对象中

  看一下com.alibaba.nacos.naming.core.cluster#updateips方法

  服务注册的源代码等同于更好地理解。它不是写的。请批评并纠正它。谢谢你!

  原始:https://juejin.cn/post/71009132222680576008