Nacos(1.4.2)注册中心原理及源码系列(七)- 服务变动事件发布机制及源码剖析

本文详细介绍了Nacos服务发现机制中的UDP推送功能,当Service中的Instance发生变化时,Nacos如何通过定时任务和UDP通知相结合的方式来实时更新客户端缓存,减少延迟。在客户端调用接口时,会将UDP端口信息传入,服务端将订阅信息存储,当Service变化时,通过UDP快速推送更新给客户端。
摘要由CSDN通过智能技术生成

服务变动事件发布机制及源码剖析

    在上边有讲到一个Nacos Server端的接口/nacos/v1/ns/instance/list,这个接口是用来根据serviceName来拉取Instace的接口,并且客户端会定时的去拉取,如果Service中的Instance发生了变化,那么在调用这个接口的时候就能感知到,但是这个感知会有延迟,默认的拉取频率为10s,Nacos在一些细节的上也做了一些良好的设计,Nacos Client并不是完全依赖这个定时任务来感知Service的变化,为了尽量的去弥补这个延迟问题,采用一个UDP的变更通知设计,这客户端调用/nacos/v1/ns/instance/list接口的时候会传入一个UDP的port,在接口中会把Service订阅的其他Service加入到一个com.alibaba.nacos.naming.push.PushService#clientMap中去,如果Service中的Instance发生了变化,取出订阅了此实例的客户端列表,并通过UDP的方式进行通知。

源码如下:

// com.alibaba.nacos.naming.controllers.InstanceController#doSrvIpxt
// 在客户端调用/nacos/v1/ns/instance/list接口的时候,会执行到该方法
public ObjectNode doSrvIpxt(String namespaceId, String serviceName, String agent, String clusters, String clientIP,
                            int udpPort, String env, boolean isCheck, String app, String tid, boolean healthyOnly) t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值