Spring Cloud实战小贴士:Ribbon的饥饿加载(eager-load)模式

我们在使用Spring Cloud的Ribbon或Feign来实现服务调用的时候,如果我们的机器或网络环境等原因不是很好的话,有时候会发现这样一个问题:我们服务消费方调用服务提供方接口的时候,第一次请求经常会超时,而之后的调用就没有问题了。下面我们就来说说造成这个问题的原因,以及如何解决的方法。

问题原因

造成第一次服务调用出现失败的原因主要是Ribbon进行客户端负载均衡的Client并不是在服务启动的时候就初始化好的,而是在调用的时候才会去创建相应的Client,所以第一次调用的耗时不仅仅包含发送HTTP请求的时间,还包含了创建RibbonClient的时间,这样一来如果创建时间速度较慢,同时设置的超时时间又比较短的话,很容易就会出现上面所描述的显现。

从日志中我们也能知道这一点细节,在第一次发起调用的时候我们可以从日志中看到如下信息:

2017-09-25 08:29:54,201 INFO  [main] com.netflix.loadbalancer.DynamicServerListLoadBalancer - DynamicServerListLoadBalancer for client hello-service initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=hello-service,current list of Servers=[192.168.99.176:9901],Load balancer stats=Zone stats: {unknown=[Zone:unknown;	Instance count:1;	Active connections count: 0;	Circuit breaker tripped count: 0;	Active connections per server: 0.0;]
},Server stats: [[Server:192.168.99.176:9901; Zone:UNKNOWN; Total Requests:0; Successive connection failure:0; Total blackout seconds:0; Last connection made:Thu Jan 01 08:00:00 CST 1970; First connection made: Thu Jan 01 08:00:00 CST 1970; Active Connections:0; total failure count in last (1000) msecs:0; average resp time:0.0; 90 percentile resp time:0.0; 95 percentile resp time:0.0; min resp time:0.0; max resp time:0.0; stddev resp time:0.0]
]}ServerList:ConsulServerList{serviceId='hello-service', tag=null}

而Feign的实现基于Ribbon,所以它也有一样的问题,下面就来看看如何解决这个问题。

解决方法

解决的方法很简单,既然第一次调用时候产生RibbonClient耗时,那么就让它提前创建,而不是在第一次调用的时候创建。

在Spring Cloud的Dlaston版本中提供了几个新的参数,它们可以很方便的帮我们实现这样的功能。

ribbon.eager-load.enabled=true
ribbon.eager-load.clients=hello-service, user-service

参数说明:

  • ribbon.eager-load.enabled:开启Ribbon的饥饿加载模式
  • ribbon.eager-load.clients:指定需要饥饿加载的客户端名称、服务名

通过上面的配置完成之后,我们尝试重启一下服务消费者,这个时候我们会发现,我们没有开始调用服务接口,但是上面初始化负载均衡的日志就已经打印出来了。这就说明我们对ribbon的饥饿加载模块设置已经生效了。


money.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图谱实战 | 图谱问答在小米小爱中的实践探索

转载公众号 | DataFunTalk分享嘉宾:代文博士 小米 高级算法工程师编辑整理:何雨婷 湖北工业大学出品平台:DataFunTalk导读:今天的介绍会围绕以下三点展开:小爱同学应用场景信息抽取图谱问答01小爱同学应用场景介绍首先…

稀疏大模型简述:从MoE、Sparse Attention到GLaM

文 | 唐工源 | 知乎Sparsity, ..., is another important algorithmic advance that can greatly improve efficiency. 稀疏性,是(神经架构搜索)之外另一个重要的算法进步,可以大大提高效率。The use of sparsity in models is .…

LeetCode 777. 在LR字符串中交换相邻字符(双指针)

1. 题目 在一个由 ‘L’ , ‘R’ 和 ‘X’ 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作。一次移动操作指用一个"LX"替换一个"XL",或者用一个"XR"替换一个"RX"。现给定起始字符…

Spring Cloud构建微服务架构:服务网关(过滤器)【Dalston版】

在前两篇文章:服务网关(基础)、服务网关(路由配置)中,我们了解了Spring Cloud Zuul作为网关所具备的最基本功能:路由。本文我们将具体介绍一下Spring Cloud Zuul的另一项核心功能:过…

图谱实战 | 美团基于知识图谱的个性化新闻推荐系统

转载公众号 | DataFunTalk分享嘉宾:刘丹阳博士 美团 实习生编辑整理:毛佳豪 中国平安浙江分公司(实习)出品平台:DataFunTalk导读:新闻阅读是人们日常生活中必不可少的活动,随着新闻逐渐从纸质端转变到电子端&#xff0…

为了养成NLP卷王,我画了一张路线图

又到了一年一度的校招季,与往年不同,受各种事件综合作用的影响,今年的校招季让很多应届生感到额外的寒冷和不安。但换个角度来说,企业主每年都会嚷嚷着算法岗人才供不应求。当然这里不是说应聘的人不够多,而是能过及格…

LeetCode 870. 优势洗牌(贪心 二分查找)

1. 题目 给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。 返回 A 的任意排列,使其相对于 B 的优势最大化。 示例 1: 输入:A [2,7,11,15], B [1,10,4,11] 输出&#xff1…

Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】

在上一篇《Spring Cloud构建微服务架构:服务网关(基础)》一文中,我们通过使用Spring Cloud Zuul构建了一个基础的API网关服务,同时也演示了Spring Cloud Zuul基于服务的自动路由功能。在本文中,我们将进一步…

技术动态 | Neo4j知识图谱的技术解析及案例分享

转载公众号 | DataFunTalk 合作分享:Jesus Barrasa-Neo4j-欧洲区售前和技术总监合作分享:丁可-Neo4j-亚太区高级技术顾问编辑整理:吴祺尧-加州大学圣地亚哥分校出品平台:DataFunTalk导读:Neo4j近年来与众多公司合作&am…

哈工大博士历时半年整理的《Pytorch常用函数函数手册》开放下载!内含200余个函数!...

近期有很多小伙伴在公众号后台咨询有没有关于Pytorch函数使用的学习资料。Pytorch是目前常用的深度学习框架之一,深受学生党的喜爱,小白本人也是使用的Pytorch框架。为了帮助更多小伙伴,小白学视觉团队整理了这份目前最全的Pytorch常用函数手…

LeetCode 984. 不含 AAA 或 BBB 的字符串(贪心)

1. 题目 给定两个整数 A 和 B,返回任意字符串 S,要求满足: S 的长度为 A B,且正好包含 A 个 ‘a’ 字母与 B 个 ‘b’ 字母;子串 ‘aaa’ 没有出现在 S 中;子串 ‘bbb’ 没有出现在 S 中。 示例 1&…

Spring Cloud构建微服务架构:服务网关(基础)【Dalston版】

通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了。比如下图所示: 我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbo…

论文浅尝 | PASSLEAF:基于样本池的不确定性知识图谱嵌入半监督学习框架

笔记整理:陈一林,东南大学硕士,研究方向为不确定性知识图谱规则与推理。论文引用:Citation: Chen, Z.M., Yeh, M.Y. and Kuo, T.W., 2021, May. PASSLEAF: A Pool-bAsed Semi-Supervised LEArning Framework for Uncertain Knowle…

扔掉老破V100、A100,英伟达新一代计算卡H100来了

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&#xf…

LeetCode 725. 分隔链表

1. 题目 给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。 这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的…

会议交流 | 知识工程/知识图谱教学研讨会 暨 知识工程课程群虚拟教研室第一次教学研讨会...

日程安排时 间:2022年10月11日(周二)19:40-21:00地 点:虚拟教研室(B版)/ 腾讯会议:287 808 963主持人:知识工程课程群虚拟教研室带头人 天津大学教授 王鑫教学研讨会会议议程&#x…

@FeignClient中的@RequestMapping也被SpringMVC加载的问题解决

问题描述 在之前发布的《Spring Cloud实战小贴士:Feign的继承特性(伪RPC模式)》一文中,我们介绍了如果使用Feign的继承特性来完成服务的提供以及服务的消费,实现了类似RPC的编程模式。但是,仔细一些的读者可能已经发现一个问题&a…

GIF发明者感染新冠后去世,没有他就没有表情包

文 | 金磊 发自 凹非寺源 | 量子位GIF(图形交换格式)发明人Stephen Wilhite,被曝去世,享年74岁。▲Stephen Wilhite据The Verge表示,在经过与Wilhite的妻子Kathaleen交流之后,确认他是于上周因感染新冠病毒…

LeetCode 1073. 负二进制数相加(负数进制)

1. 题目 给出基数为 -2 的两个数 arr1 和 arr2,返回两数相加的结果。 数字以 数组形式 给出:数组由若干 0 和 1 组成,按最高有效位到最低有效位的顺序排列。例如,arr [1,1,0,1] 表示数字 (-2)3 (-2)2 (-2)0 -3。数组形式 的…

图谱实战 | 真实世界医疗知识图谱及临床事件图谱构建

转载公众号 | DataFunTalk分享嘉宾:李林峰博士 医渡云 技术创新副总裁编辑整理:田育珍 搜狗出品平台:DataFunTalk导读:今天介绍的主题是真实世界医疗知识图谱及临床事件图谱的构建。数据源主要来自于医院的EMR、HIS、LIS、RIS等系…