第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Spring Cloud Alibaba 教程 | Nacos(二)

源码解析客户端注册过程

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

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

我们自己开发的微服务使用Nacos注册中心时需要加入alibaba-nacos-discovery依赖,
spring-cloud-starter-alibaba-nacos-discovery直接依赖了spring-cloud-alibaba-nacos-discovery模块。
在这里插入图片描述
spring-cloud-alibaba-nacos-discovery模块使用了SpringBoot的starter机制(不了解的同学可以看这篇文章:https://www.cnblogs.com/lanqie/p/11172293.html)指定了自动配置类NacosDiscoveryAutoConfiguration
在这里插入图片描述
进入到NacosDiscoveryAutoConfiguration这个类,这是一个配置类,负责实例化三个对象NacosRegistration、NacosServiceRegistry、NacosAutoServiceRegistration。这三个对象是Spring Cloud Nacos Discovery 遵循了 spring cloud common 标准,分别对应实现了Registration 、ServiceRegistry、AutoServiceRegistration这三个接口。
在这里插入图片描述

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这两个对象。
在这里插入图片描述
在这里插入图片描述
所以当应用启动并且初始化完成之后,会回调onApplicationEvent方法,紧接着进入到bind方法里面,然后调用了start()方法,在start()方法里面调用了register方法。
在这里插入图片描述
在这里插入图片描述
最终通过依赖的serviceRegistry对象调用它的标准方法register(),注册Registration实例。
在这里插入图片描述

NacosNamingService

进入到NacosServiceRegistry的register方法,获取到serviceId和instance之后,调用namingService的registerInstance(String serviceName, Instance instance)方法。
在这里插入图片描述
接着进入到NacosNamingService类的registerInstance方法,在通过serverProxy发起实例注册之前,实例化了BeatInfo对象,并且通过BeatReactor先发送心跳数据到注册中心。
在这里插入图片描述
进入到NamingProxy的registerService()方法,在该方法里面构造HTTP(HTTPS)的请求参数,其中请求方式是HttpMethod.POST,UtilAndComs.NACOS_URL_INSTANCE值为目标地址注册中心对应处理注册的Controller的URL路径,值为:/nacos/v1/ns/instance。
在这里插入图片描述
在这里插入图片描述

BeatReactor

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

在这里插入图片描述
BeatTask任务通过serverProxy发送心跳信息给注册中心,之后立马通过executorService在period间隔时长之后再次执行BeatTask任务,如此循环达到和注册中心服务维持心跳的作用。
在这里插入图片描述
默认心跳间隔时长是5秒。
在这里插入图片描述
在这里插入图片描述

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消