Nacos服务注册中心服务发现源码分析

客服端分析

客户端主动拉取的情况如下:

在NacosDiscoveryClient类中可以找到,调用NacosNamingService的selectInstances方法

主要调用HostReactor的getServiceInfo方法

getServiceInfo方法中主要做了几件事,获取本地缓存的ServiceInfo,从服务端获取ServiceInfo,定时任务更新ServiceInfo从本地缓存中,就是从map中获取

 从服务端获取,发送http请求,processServiceJSON方法将返回结果封装成ServiceInfo存入serviceInfoMap中,并写入磁盘中。

 定时任务方法如下,

 添加一个UpdateTask任务,每一秒执行

 UpdateTask的run方法中,可以看到不断的调用 updateServiceNow方法,不断的从服务器获取ServiceInfo信息。

客户端接收服务端发送的UDP信息:

在HostReactor实例化的时候,会实例化一个PushRecver

 创建了一个udpSocket,并且不断的执行一个异步任务,这个任务就是他自己

 在HostReactor的run方法中,可以看到,从udpSocket中获取服务端发送的数据,这个数据如果是dom类型的,会调用HostReactor的processServiceJSON方法,将数据存入到serviceMap中,并持久化到磁盘。

 服务端返回服务集合

在ServiceController的list请求中 

ServiceOperatorV1Impl调用listService

调用ServiceManager的chooseServiceMap方法,直接从serviceMap中获取。 

 这是服务端接口返回数据的逻辑,UPD的方式是在服务注册的时候就已经开始了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值