Nacos 1.4.1注册中心源码深度解析-服务发现
创始人
2024-06-02 07:18:02
0次

服务发现

服务发现就是查询实例列表。

客户端

客户端服务发现的入口在

com.alibaba.nacos.client.naming.NacosNamingService#getAllInstances(java.lang.String, java.lang.String, java.util.List, boolean)

--> com.alibaba.nacos.client.naming.core.HostReactor#getServiceInfo

getServiceInfo0

首先会通过getServiceInfo0方法,从缓存中获取数据。 serviceInfoMap就是本地的缓存。

private ServiceInfo getServiceInfo0(String serviceName, String clusters) {String key = ServiceInfo.getKey(serviceName, clusters);return serviceInfoMap.get(key);
}

updateService

首次进入可能是获取不到的,所以这里就会调用updateServiceNow方法进行更新服务列表。

com.alibaba.nacos.client.naming.core.HostReactor#updateServiceNow

--> com.alibaba.nacos.client.naming.core.HostReactor#updateService

先通过queryList去服务端获取实例列表

com.alibaba.nacos.client.naming.net.NamingProxy#queryList

reqApi(UtilAndComs.nacosUrlBase + "/instance/list", params, HttpMethod.GET);

如果获取的列表部位空,则调用processServiceJson进行解析。然后存入缓存。

serviceInfoMap.put(serviceInfo.getKey(), serviceInfo);

scheduleUpdateIfAbsent

在getServiceInfo的底部,有一个定时任务的方法,会定时从服务端拉取最新的服务列表,更新到缓存。

com.alibaba.nacos.client.naming.core.HostReactor#scheduleUpdateIfAbsent

addTask(new UpdateTask(serviceName, clusters));

在scheduleUpdateIfAbsent方法中,添加了一个UpdateTask的定时任务。定时任务的执行就是在run方法里。我们来下这个定时任务干了什么。

com.alibaba.nacos.client.naming.core.HostReactor.UpdateTask#run

这里的核心还是调用上面的updateService方法,从服务端获取最新的列表更新到缓存。 然后再finally中递归的调用定时任务,实现了轮询。

客户端的实现比较简单,我们在来看下服务端。

服务端

我们看到客户端调用的地址是/nacos/v1/ns/instance/list

reqApi(UtilAndComs.nacosUrlBase + "/instance/list", params, HttpMethod.GET);

对应服务端的接口在com.alibaba.nacos.naming.controllers.InstanceController#list

-->com.alibaba.nacos.naming.controllers.InstanceController#doSrvIpxt

先通过serviceManager.getService从缓存中拿到service,然后

-->service.srvIPs -->com.alibaba.nacos.naming.core.Service#srvIPs

-->allIPs

-->clusterObj.allIPs()

这里就是服务注册的时候注册的实例列表了。

OK,服务端的服务发现更简单,到此为止!

相关内容

热门资讯

老钱修猫修狗涨粉600万 低成... “糖尿病还有救吗?”“这不还活着吗,樱桃眼,50块钱”……11月6日,河北唐山一位乡村兽医老钱的修猫...
英国哈里王子岳父在美国被FBI... 英国哈里王子的妻子、萨塞克斯公爵夫人梅根·马克尔的父亲老托马斯·马克尔在美国佛罗里达州被美国联邦调查...
一个伊朗女人搞崩了美股 AI法... 近日,网上有说法称伊朗裔美国民主党议员亚萨明·安萨里对本轮美国AI科技股的下跌起到了重要作用。9月2...
新人举办“极简婚礼” 松弛感拉... 一场婚宴上,新娘父亲上台致辞只用了41秒:“吃好喝好。”话音落下,宾客便直接开席。今年9月,浙江宁波...
6位草根做AI短剧播放破120... 近日,AI短剧《持械入宋》火爆出圈,引发了广泛关注。关于这部剧的创作团队,外界有很多传言,其中一则称...
张萌老公简历居然这么厉害 低调... 不少网友在了解了张萌的背景后感到惊讶,原来她在综艺节目里提到的心结背后,有着一段真人版职场缘分的故事...
立冬节气有哪些习俗 老讲究藏风... 立冬时气温逐渐走低,草木收敛生机,万物进入收藏状态。古人根据物候变化衍生出不少习俗。绍兴人讲究立冬酿...
张萌:特别不喜欢被叫老板娘 标... 张萌特别不喜欢被叫老板娘,话刚出口,她的眼圈就红了。在综艺录制现场,她情绪一下子上来,眼泪没憋住。马...
台湾寺庙地下搜出近800公斤金... 在台湾宜兰县冬山乡的东林寺,发生了一起令人震惊的事件。11月2日,检方带着搜索票进入寺庙,在禅房外的...
人民日报评女厕偷拍黑产 重拳整... 近日,多个与偷拍有关的话题登上热搜。人民日报评论指出,偷拍不仅伤害被拍者,还严重侵害了公众在公共空间...
记者走访陕西商南案件现场 嫌疑... 11月6日,陕西商南县公安局发布警情通报,称11月4日凌晨5时许,商南县城区发生一起刑事案件。犯罪嫌...
今日立冬不仅是天气变化的节点 ... 时间飞逝,前几天还在享受秋日阳光、晾晒被子,转眼间立冬已至。院子里的柿子树上只剩下零星几颗果子,菜市...
男子11元拍走一套房 拍卖公司... 11月5日,阿里资产拍卖平台上正拍卖一套鹤岗工农区北国明珠一期的房子,面积68.36平方米,房产证显...
东北的糖葫芦进入“魔法时代” ... “杨枝甘露奶酪山楂麻糍奶皮子黄油薄脆糖葫芦”——这不是绕口令,而是2026年糖葫芦店的点单暗号。有网...
夫妻入职药企不足一个月1死1瘫... 2025年8月,王先生的父母入职福建邵武市的一家药业公司,工作不到一个月,两人因身体不适被送医。王先...
巴拉圭国会通过对培尼亚的弹劾议... 巴拉圭国会6日通过对总统培尼亚的弹劾议案,解除其总统职务。培尼亚被指控介入一私有银行业务,存在利益冲...
戴2499元指环不易被推倒?企... 近日,在某展会上,一款智能指环走红。该产品名为“即沃Kring01智能指环”,售价为2499元,据称...
2026中国电影节在澳大利亚开... 11月5日,2026中国电影节悉尼专场开幕,由中国国家电影局、驻澳大利亚大使馆与驻悉尼总领馆共同主办...
深圳大批花海上新 香蜜湖畔绽放... 几个月前,有网友在社交平台上发帖,批评香蜜公园生态岛一处花卉装饰“本身觉得丑”“土洋相结合”,并配图...
河北邢台5县人武部招录军队文职... 2027年军队文职人员公开招考工作已全面展开,河北省滦平县人武部设有1个招考岗位。具体要求如下:- ...