当前位置: 首页 > news >正文

[Nacos] Nacos Client获取调用服务的提供者列表 (四)

文章目录

      • 1.Nacos Client获取调用服务的提供者列表
        • 1.1 从Ribbon的负载均衡入手到Nacos Client获取调用服务的提高者列表
        • 1.2 getServers方法返回分析
        • 1.3 通过selectInstances方法查找Instances实例
        • 1.4 获取到要调用服务的serviceInfo

Nacos Client 从Ribbon负载均衡调用服务。

1.Nacos Client获取调用服务的提供者列表

1.1 从Ribbon的负载均衡入手到Nacos Client获取调用服务的提高者列表

在这里插入图片描述

RibbonClientConfiguration#ribbonLoadBalancer()

	@Bean@ConditionalOnMissingBeanpublic ILoadBalancer ribbonLoadBalancer(IClientConfig config,ServerList<Server> serverList, ServerListFilter<Server> serverListFilter,IRule rule, IPing ping, ServerListUpdater serverListUpdater) {if (this.propertiesFactory.isSet(ILoadBalancer.class, name)) {return this.propertiesFactory.get(ILoadBalancer.class, config, name);}return new ZoneAwareLoadBalancer<>(config, rule, ping, serverList,serverListFilter, serverListUpdater);}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.2 getServers方法返回分析

在这里插入图片描述

在这里插入图片描述

从NacosNamingService中获取instance, 最后加入到Server的list中。

	private List<NacosServer> instancesToServerList(List<Instance> instances) {List<NacosServer> result = new ArrayList<>();if (null == instances) {return result;}for (Instance instance : instances) {result.add(new NacosServer(instance));}return result;}

通过遍历传入的Instances, 加入至NacosServer队列中。

1.3 通过selectInstances方法查找Instances实例

在这里插入图片描述

NacosServerList#getServers() -> NacosNamingService#selectInstances() 3个参数 -> 4个参数 -> 5个参数
通过参数判断实例是否是安全的, 是否是订阅请求

在这里插入图片描述

5个参数的方法去获取到要调用服务的serviceInfo Client获取要调用服务的提供者列表

在这里插入图片描述

最后通过selectInstances()两个参数的方法去过滤出所有可用的实例

在这里插入图片描述

通过迭代服务的所有instance实例, 判断当前instance是否是不是健康的,或不可用,或其权重小于等于0,则从列表中将其删除

1.4 获取到要调用服务的serviceInfo

在这里插入图片描述

此方法之前分析过, 先获取本地的服务。此方法最后有一个定时任务, 去定时更新本地注册表中的当前服务。

在这里插入图片描述

创建一个定时异步操作对象,并启动这个定时任务, 将这个定时异步操作对象写入到缓存map。

http://www.lryc.cn/news/69767.html

相关文章:

  • gcc编译一个程序的步骤(嵌入式学习)
  • 邹检验,结构变化识别及其R语言实现
  • 腾讯云,物联网开发平台产品,动态注册步骤
  • Padding, Spacer, Initializer 的使用
  • 少儿编程 中国电子学会图形化编程等级考试Scratch编程四级真题解析(判断题)2023年3月
  • Makefile学习笔记
  • C++ 函数模板基础
  • CUDA torch reinstall 与杂谈
  • [230530] 托福TPO口语真题| TPO66~TPO72|XPO|Task1|20:30~21:00
  • 【FMC201】基于FMC标准的1路CameraLink Full 输入 子卡模块
  • C语言_VS系列编译器写C语言或C++代码产生的一些错误与警告的解决方法(VS2010/VS2019)
  • 从零实现一个数据库(DataBase) Go语言实现版 0.介绍
  • 操作系统-X18 linux日志审计
  • 【Vue工程】011-Axios
  • Cy7 NHS ester水溶性七甲川花菁染料标记活性脂477908-53-5
  • 利用CX-ONE搭建omron PLC仿真环境
  • webpack Plugin Loader
  • 关闭eslint - vue篇
  • XXL-SSO简要说明
  • HC-05蓝牙模块的使用
  • 初始python
  • C++入门预备语法
  • python发送email
  • 软件测试面试题自动化面经分享——这才是高薪的秘诀!
  • Ceph入门到精通-Centos8安装prometheus
  • 把树莓派改造成无线网卡(3)-----共享无线网络,无线网络转换成有线网络,让有线网络设备连上无线网络
  • NumPy
  • C++17完整导引-模板特性之类模板参数推导
  • CSS3小可爱亲吻表白特效,给你的五一假期增添点小乐趣
  • Samba CentOS 7 安装