nacos源码解读&进阶&线上问题汇总_服务注册流程之客户端注册逻辑

一、Nacos服务注册整体流程图

二、Nacos服务启动自动注册源码剖析

2.1、SPI自动装备

  1. 通过SpringBoot的Spi机制注入Nacos所需要的Bean;
  2. NacosServiceRegistryAutoConfiguration 注入下面三个Bean
    NacosServiceRegistry、NacosRegistration、NacosAutoServiceRegistration;
    在这里插入图片描述
    在这里插入图片描述

2.2 监听事件启动

(1)、监听 WebServerInitializedEvent 事件;
(2)、调用NacosServiceRegistryregister 方法

NacosAutoServiceRegistration 的类图关系
在这里插入图片描述
AbstractAutoServiceRegistration 通过监听WebServerInitializedEvent 事件,进行服务注册,调用bind->start->register
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Nacos实现了标准的Spring Cloud ServiceRegistry 接口,从这里可以学习到设计接口规范,无论什么样的注册中心,都可轻松实现标准化接口,扩展性很高。

2.3、注册逻辑

(1)、NacosServiceRegistry 调用register;
(2)、Instance 实例对象的填充
(3)、NamingService作客户端的注册、取消、获取服务列表实列、订阅等功能接口;
在这里插入图片描述
补充 NamingService 的初始化逻辑,通过反射进行实例化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
NamingService 的初始化逻辑完毕

NamingService 调用NamingClientProxy进行注册在这里插入图片描述
NamingClientProxy 有三个实现 NamingClientProxyDelegate、NamingGrpcClientProxy、NamingHttpClientProxy,1.0是以Http协议来进行源码注册逻辑分析,2.0是以Grpc协议来处理注册与心跳的;

(1)、NamingClientProxyDelegate 选择NamingGrpcClientProxy 还是 NamingHttpClientProxy
(2)、如果是临时节点,那么就采用NamingGrpcClientProxy发送注册
在这里插入图片描述
在这里插入图片描述
NamingHttpClientProxy 创建维护心跳检查、长链接信息等
在这里插入图片描述
RpcClient 维护了心跳检查,每隔5S
在这里插入图片描述

1.0版本采用的是Http;
Http方式构造注册的请求参数,随机选择NacosServer构造Http请求,请求地址 http://ip:port/nacos//v1/ns/instance
在这里插入图片描述
思考:为什么要用长链接GPRC替换掉Http的长轮训方案,两个方案的优缺点都有哪些

以上是客户端发起注册逻辑的处理源码分析,简单总一个总结
1、监听WebServerInitializedEvent 事件
2、组装参数,随机选择NacosServer 服务实例
3、通过GRPC方式维护长链接发送注册请求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值