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

news/2024/3/4 9:15:55

文章目录

      • 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.ppmy.cn/news/74457.html

相关文章

【大数据】Presto(Trino)REST API 与执行计划介绍

文章目录 一、概述二、环境准备三、常用 REST API1&#xff09;worker 节点优雅退出2&#xff09;提交SQL查询请求3&#xff09;获取查询状态4&#xff09;获取查询结果5&#xff09;取消查询请求6&#xff09;获取Presto 节点信息7&#xff09;获取Presto服务器使用统计信息8&…

单模光纤二维模场分布的MATLAB仿真

在上一篇文章中&#xff0c;我们介绍了单模光纤的一维模场分布&#xff0c;能看出沿着径向的光场分布情况&#xff0c;并分析能量的分布 这一篇中&#xff0c;我们绘制光纤横截面上的二维光场分布&#xff1a;代码如下&#xff1a; clear close all V 2.4000; U 1.6453; W …

NC高频问题

1、在数据权限节点新增授权规则&#xff0c;规则明细需要增加一个查询条件。 答&#xff1a;使用系统管理员登录&#xff0c;在元数据过滤管理节点场景选择数据权限&#xff0c;将需要的字段勾选启用。 2、收款分析明细查询不到期初的应收数据。 答&#xff1a;该报表是查询收…

【Linux之IO系统编程学习】01.open函数使用 代码实现touch命令效果

【Linux之IO系统编程学习】 项目代码获取&#xff1a;https://gitee.com/chenshao777/linux_-io.git &#xff08;麻烦点个免费的Star哦&#xff0c;您的Star就是我的写作动力&#xff01;&#xff09; 01.open函数使用 & 代码实现touch命令 一、open函数&#xff08;ma…

Unity使用URP基础介绍文章目录

大家好&#xff0c;我是阿赵&#xff0c;之前写了几篇关于Unity的URP渲染管线的介绍文章&#xff0c;我觉得又可以整理出一个系列的文章目录了。暂时写的内容都比较的基础&#xff0c;之后如果继续写相关的文章&#xff0c;可以继续扩充这个目录。   URP(Universal Render Pi…

c++实现gRPC

无论什么语言&#xff0c;实现grpc的核心是.proto文件&#xff0c;通过protoc命令将.proto文件生成grpc框架的接口文件*gb*, 该文件中包含.proto定义的方法及参数接口&#xff0c;服务器&#xff0c;客户端相关操作接口&#xff1b;然后再编写服务器&#xff0c;客户端代码&…

3-《安卓基础》

3-《安卓基础》 一.Android系统架构二.四大组件1. Activity1.1 生命周期1.2. Activity四种启动模式1.3.Activity任务栈的概念1.4 面试题面试题1&#xff1a;onSaveInstanceState(Bundle outState)&#xff0c;onRestoreInstanceState(Bundle savedInstanceState) 的调用时机&am…

springboot+swagger项目中,controller引入@NotEmpty等校验注解的问题

springboot项目 springbootswagger项目中&#xff0c;controller层如果使用对基本数据类型使用 NotEmpty Length 等校验注解&#xff0c;controller会获取不到值&#xff0c;加了RequestBody后可以获取到了&#xff0c;但是前端传值content-type必须是text/plain。所以建议con…

力扣sql中等篇练习(二十六)

力扣sql中等篇练习(二十六) 1 世界排名的变化 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # 分别求出变化前后的排名 然后再进行内连接即可 # row_number()里面也可以用多个字段加减的表达式去进行…

动态ip与静态ip的区别是什么?

动态ip和静态ip的区别在于&#xff1a; 动态ip可以自动获取IP地址&#xff0c;静态ip需要手动设置IP地址。 动态ip一般用于局域网内部或小型企业网中&#xff0c;静态ip一般用于大型企业网或骨干网等对安全性要求高的场合。 在网速上&#xff0c;动态ip和静态ip没有区别。 动…

文心一言和ChatGPT最全对比

文心一言和ChatGPT都是基于深度学习技术的自然语言处理模型&#xff0c;有各自的优势和使用场景&#xff0c;无法简单地比较 ChatGPT 和文心一言哪一个功能更强大&#xff0c;它们各自具有优势和局限性&#xff0c;需要根据具体需求进行选择&#xff0c;以下一些具体对比&#…

生成式AI热潮:一场“添饭碗”的科技革命

今年以来&#xff0c;人工智能&#xff08;AI&#xff09;热潮席卷全球&#xff0c;被认为将掀起新的科技革命。 5月18日的2023天津世界智能大会&#xff0c;以“智行天下 能动未来”为主题&#xff0c;重点关注人工智能发展的新趋势、新技术、新业态。大会开幕式结束之后&…

【观察】共建“伙伴+华为”背后,是华为平台到体系的战略“升维”

2017年&#xff0c;在当年的“伙伴大会”上&#xff0c;华为首次提出以“平台生态”双轮驱动的战略&#xff0c;以更加开放的心态积极拥抱产业变化&#xff0c;通过和产业链上各个层级的合作伙伴一起合作&#xff0c;共同实现新的市场突破。 彼时中国企业和行业的数字化转型刚刚…

本地搭建wamp服务器并内网穿透实现无公网IP远程访问

文章目录 前言1.Wamp服务器搭建1.1 Wamp下载和安装1.2 Wamp网页测试 2. Cpolar内网穿透的安装和注册2.1 本地网页发布2.2 Cpolar云端设置2.3 Cpolar本地设置 3. 公网访问测试4. 结语 转载自cpolar极点云的文章&#xff1a;无公网IP&#xff1f;教你在外远程访问本地Wamp服务器「…

【dfn序+DP】树

把一棵树转化成一个序列有三种方法&#xff1a; dfs序 dfn序&#xff08;时间戳&#xff09; 欧拉序 关于这三者的区别&#xff0c;参考这篇博客&#xff0c;讲的超级好&#xff01; 重谈DFS序、时间戳和欧拉序 - Seaway-Fu - 博客园 (cnblogs.com) 题意&#xff1a; 思路…

企业数字转型加速器!居然是他!该不会还有人没用上吧?

随着数字化时代的到来和技术的发展&#xff0c;企业数字化转型已经成为全球企业发展的重要趋势。然而&#xff0c;数字化转型的过程却并非一帆风顺&#xff0c;常常因为 IT 复杂度高、开发周期长等问题而遇到许多挑战&#xff0c;这时候低代码开发平台就能够发挥重要作用。 低代…

【Java】IDEA 配置java开发环境(windows)

刚才需要临时运行一个java脚本&#xff0c;java还是2、3年前学的&#xff0c;都忘光了。IDEA 2021还在我电脑装着&#xff0c;进去却忘记了怎么配置java环境&#xff0c;这里复习一下。 文章目录 01 安装 JDK1.1 下载与安装1.2 配置环境变量 02 在IDEA中运行java程序 01 安装 J…

Redis数据结构-SDS

一、SDS&#xff08;Simple Dynamic String&#xff0c;简单动态字符串&#xff09; Redis没有使用C语言传统的字符串表示方式&#xff08;以’\0’结尾的字符数组&#xff09;&#xff0c;而是自己实现了sds的抽象类型&#xff0c;Redis默认使用sds作为字符串的表示。 set ms…

今日的CSS小案例

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大一在校生&#xff0c;web前端开发专业 &#x1f921; 个人主页&#xff1a;几何小超 &#x1f43c;座右铭&#xff1a;懒惰受到的惩罚不仅仅是自己的失败&#xff0c;还有别人的成功。 &#x1f385;**学习目…

iptables防火墙1

iptables防火墙 iptables概述 Linux 系统的防火墙 &#xff1a;IP信息包过滤系统&#xff0c;它实际上由两个组件netfilter 和 iptables组成。 主要工作在网络层&#xff0c;针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。 netfilter/iptables 关系&#xf…
最新文章