Spring Cloud Alibaba 教程 | Nacos(二)

源码解析客户端注册过程

nacos作为注册中心,包含了nacos服务端(注册中心服务)和nacos客户端,nacos注册中心服务上面一讲已经介绍过了它是一个用Java语言编写开源web项目,并且拥有自己的管理台,对于nacos注册中心服务我们后面文章会单独抽出来讲解,这篇文章我们先来源码解析我们自己编写的微服务项目(nacos客户端)是如何被注册到nacos注册中心的。
在这里插入图片描述


    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-discovery

我们自己开发的微服务使用Nacos注册中心时需要加入alibaba-nacos-discovery依赖,
spring-cloud-starter-alibaba-nacos-discovery直接依赖了spring-cloud-alibaba-nacos-discovery模块。
在这里插入图片描述

NacosRegistration

NacosRegistration实现Registration接口和ServiceInstance接口,在nacos中它代表了一个服务实例,它描述了关于实例的id、名称、ip、端口和元数据等等这些信息。
在这里插入图片描述

NacosServiceRegistry

NacosServiceRegistry则负责实现Spring Cloud标准接口ServiceRegistry的五个方法

  • void register(R registration);
  • void deregister(R registration);
  • void close();
  • void setStatus(R registration, String status);
  • T getStatus(R registration);

并且依赖了NamingService这个接口实例对象(NacosNamingService实现了该接口),NacosNamingService负责发起远程HTTP(HTTPS)调用,并将实例信息发送到注册中心服务,完成服务注册,稍后会详细分析。
在这里插入图片描述

NacosAutoServiceRegistration

NacosAutoServiceRegistration继承了抽象类AbstractAutoServiceRegistration,AbstractAutoServiceRegistration实现了标准接口AutoServiceRegistration(该接口是一个空接口),并且实现了ApplicationListener应用监听接口去监听WebServerInitializedEvent事件,WebServerInitializedEvent事件代表了应用初始化完成。同时NacosAutoServiceRegistration对象还依赖了NacosRegistration和ServiceRegistry这两个对象。
在这里插入图片描述

NacosNamingService

进入到NacosServiceRegistry的register方法,获取到serviceId和instance之后,调用namingService的registerInstance(String serviceName, Instance instance)方法。
在这里插入图片描述

BeatReactor

BeatReactor负责实例和注册中心的心跳维持,构造方法依赖了NamingProxy发起远程HTTP(HTTPS)调用,通过threadCount创建ScheduledExecutorService任务线程池服务类。实例注册的时候调用了addBeatInfo()方法,通过ScheduledExecutorService执行BeatTask任务

在这里插入图片描述

关注公众号了解更多原创博文

Alt

你可能感兴趣的:(springcloud,java,alibaba,spring)