NacosNamingService中selectInstances的原理和作用


本篇内容主要讲解“NacosNamingService中selectInstances的原理和作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“NacosNamingService中selectInstances的原理和作用”吧!本文主要研究一下NacosNamingService的selectInstancesnacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/naming/NacosNamingService.javaselectInstances首先从hostReactor获取serviceInfo,然后再从serviceInfo.getHosts()剔除非healty、非enabled、weight小于等于0的instance再返回;如果subscribe为true,则执行hostReactor.getServiceInfo获取serviceInfo,否则执行hostReactor.getServiceInfoDirectlyFromServer获取serviceInfonacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/naming/core/HostReactor.javagetServiceInfo首先判断failoverReactor.isFailoverSwitch(),如果是则返回failoverReactor.getService(key);接着通过getServiceInfo0从serviceInfoMap查找,如果找不到则创建一个新的然后放入serviceInfoMap,同时放入updatingMap,执行updateServiceNow,再从updatingMap移除;如果从serviceInfoMap找出来的serviceObj在updatingMap中则等待UPDATE_HOLD_INTERVAL;最后执行scheduleUpdateIfAbsent,再从serviceInfoMap取出serviceInfoupdateServiceNow则从serverProxy.queryList获取结果,然后通过processServiceJSON解析并根据需要更新serviceInfoMap;scheduleUpdateIfAbsent方法判断futureMap是否有该任务,如果没有则添加一个UpdateTaskgetServiceInfoDirectlyFromServer方法则直接请求serverProxy.queryList获取ServiceInfonacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/naming/core/HostReactor.javaUpdateTask实现了Runnable接口,其run方法首先从serviceInfoMap获取serviceObj,获取不到则执行updateServiceNow,然后再次延时调度UpdateTask;可以从serviceInfoMap获取serviceObj的话则判断serviceObj.getLastRefTime()是否小于等于lastRefTime,是的话则执行updateServiceNow,否则执行refreshOnly;最后再次延时调度UpdateTask,并更新lastRefTimenacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/naming/net/NamingProxy.javaqueryList方法会往/instance/list接口发送GET请求查询服务实例列表selectInstances首先从hostReactor获取serviceInfo,然后再从serviceInfo.getHosts()剔除非healty、非enabled、weight小于等于0的instance再返回;如果subscribe为true,则执行hostReactor.getServiceInfo获取serviceInfo,否则执行hostReactor.getServiceInfoDirectlyFromServer获取serviceInfo到此,相信大家对“NacosNamingService中se 香港云主机lectInstances的原理和作用”有了更深的了解,不妨来实际操作一番吧!这里是开发云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: k8s中tomcat项目jvm参数设置的示例分析

这篇文章主要介绍k8s中tomcat项目jvm参数设置的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!k8s集群方便了部署。但是也带来了其他问题,比如随着服务不断的增加,内存+cpu不断的新增,成本也在增加。早期的前后台项目都采…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/30 12:57
下一篇 07/30 12:57

相关推荐