首页 科普 资讯 养生 问答 找医院 相关问答
首页> 问答

【SpringCloud原理】OpenFeign原来是这么基于Ribbon来实现负载...

发布网友 发布时间:7小时前

我来回答

1个回答

热心网友 时间:7小时前

欢迎来到本篇文章,之前我们已经深入探讨了OpenFeign的动态代理生成原理和Ribbon的运行机制。若要对OpenFeign的动态代理生成原理和Ribbon的运行原理有更深入的了解,可关注微信公众号“三友的java日记”,通过菜单栏查看整理的相关内容。接下来,我们将继续深入SpringCloud组件原理,探讨OpenFeign是如何利用Ribbon实现负载均衡的,以及两组件如何协同工作的。

一、Feign动态代理调用实现rpc流程解析

我们从Feign客户端接口的动态代理生成原理出发,了解到动态代理基于JDK实现,所有方法调用最终都会调用到InvocationHandler接口的实现,即ReflectiveFeign.FeignInvocationHandler。接下来,我们将深入探讨FeignInvocationHandler如何实现rpc调用。

FeignInvocationHandler通过invoke方法实现动态代理功能,其主要逻辑如下:

1. 对于调用的方法是否为equals、hashCode、toString等特殊方法进行判断,若为则无需走rpc调用。

2. 从dispatch获取调用方法对应的MethodHandler,然后调用MethodHandler的invoke方法。

3. MethodHandler在构建动态代理时生成,作用是最终实现rpc调用,每个方法有对应的MethodHandler。

4. SynchronousMethodHandler是实现rpc调用的关键类,通过构造RequestTemplate、Options和重试组件,发起http请求,并通过Client接口执行请求,返回响应数据。

二、LoadBalancerFeignClient与Ribbon整合

从整个动态代理调用流程来看,Client是关键组件,负责发送http请求。Feign是如何通过Ribbon实现负载均衡的呢?让我们进一步剖析。

通过整合配置类FeignRibbonClientAutoConfiguration,我们可以找到构造Feign.Builder实现的关键组件:LoadBalancerFeignClient。这个组件依赖于负载均衡,是Feign与Ribbon集成的入口。

LoadBalancerFeignClient实现的核心逻辑在于从请求的URL中提取服务名,通过缓存机制获取或创建FeignLoadBalancer,最终调用executeWithLoadBalancer方法发起请求,完成负载均衡与服务调用。

三、FeignLoadBalancer实现负载均衡与发送请求

FeignLoadBalancer是实现选择负载均衡和发送http请求的关键组件。其核心逻辑在于重构请求路径,将服务名替换为具体的服务器IP和端口,然后通过execute方法完成请求。

四、总结与图解

本篇文章完整阐述了OpenFeign、Ribbon与注册中心之间的协同工作原理。通过总结,我们了解到OpenFeign在进行RPC调用时,借助Ribbon选择负载均衡服务器,而Ribbon从注册中心获取服务器列表。通过这张图,我们可以清晰地看到三个组件之间的协同关系。

至此,我们完成了对这三个组件核心源码和流程的深入探讨。希望本篇文章能帮助读者理解微服务架构的基础原理,同时对OpenFeign、Ribbon、Nacos源码有更深入的认识。
308S标注使用0W-30的机油,如果用5w-40的有影响么 如果飞船在飞行时遇到一粒沙,飞船是否会直接报废?为什么呢?_百度... 火车或地铁行驶中的苍蝇或蚊子这些飞虫是怎么飞的 我一直很疑惑,在地铁公交上的飞虫蚊子之类的,它们不停在杆上,就这么... 固态硬盘的读取是不是都比写入要快啊?才买了个东芝的Q Pro,发现写入496... 我是非护理专业的专科生 但我想考护理资格证 该怎么办呢 我是非护理专业的专科生 但我想考护理资格证 该怎么办? 中专非护理专业单招可以考护理吗 苹果宣布的AppleWatchSeries6和AppleWatchSE有哪些新功能和价格? 描写榕树生命力顽强的诗句 地点经纬度比较 凌晨2点我就要离开这个世界了,说不害怕是假的,内心还有不甘。可我又... 深度xp精简版6.0怎么样?值得下载吗? 深度xp精简系统在哪下载比较安全?越干净越好。 为什么B站深受年轻人的喜爱? 什么是哔哩哔哩网站? 免费看的WWW哔哩哔哩:年轻一代的视听盛宴 污水处理主要用什么药剂?解析污水处理药剂的种类和作用 担心毛孔粗大?有水光针就够了 肉毒素这么好,那它都有什么功能? 最小的质数是___,最小的合数是___,最小的自然数是___ 支付宝转错账了怎么把钱追回来 支付宝转错账户追回方法 为什么不锈钢会发黑 不锈钢为什么变黑 梦见条大蛇把自已咬出血是什么寓,义 保定的车主在石家庄违规通知罚款信息会写哪的交警? 车是石家庄的牌照,在保定闯了红灯,人是邢台的要去哪里处理违章?_百度... 从翟天临到江一燕,为什么明星贩卖“学霸”人设屡屡翻车? 监控怎么摆放画面才是正的? 郑州大件物流哪家便宜 托运东西什么快递最便宜 哪些物流比较便宜的 物流公司有哪些便宜 15个美丽乡村建设经典案例,乡村振兴就要这样搞! ...2024考研初试学硕快题乡村教堂附属建筑设计 ...同一屋檐下”– 四川彭州小石村建筑设计实践 晨光烧饼利润怎样 我觉得南派三叔的文笔特别好,写的小说剧情也超赞,看完他的盗墓笔记后... 有没有人觉得南派三叔的文笔不够流畅。如有认同者请简释理由。PS:请... 现代七巧板起源与传承 我的蓝色科技梦智力七巧板亲子活动怎么做 智力活动方案 什么叫直线回归方程 人最少睡多少时间 美的空调的应急开关在哪里 美的空调的应急开关在哪里呢? 辛运星的英文是什么 幸运星的英文单词怎么拼 4200个字35分钟打完每分钟打多少个字用简便方法计算 初中生女生学什么专业最吃香 初中生女生学哪些专业最吃香 怎样选购笔记本电脑怎样选购笔记本电脑包 海南芒果种类有哪些 0怎么设置铃声ios7? 主板设置成ahci为什么不行呢? 山大文科目前最好就业的专业 山大汉语言文学专业就业前景 山大的汉语言文学方面的考研好考吗 我的世界空气炮制作方法介绍介绍_我的世界空气炮制作方法介绍是什么 诛仙3天道戒指升级顺序 女生生气了就哭闹随便哄一下就好了 不生气了经常和男朋友说想你想你爱啊... ...有什么都忍不住说然后一直哭 哭完了就好了 女生什么性格?_百度... ...男朋友哄一下就开心了撒娇那样 这个女生什么性格? 二战中日本投降时有哪些日本的人物切腹 对比赛的祝福语 泰山花海景区地址在哪里? 天颐阁地址在哪里? 上海2022下半年教师资格考试时间安排及注意事项 ...现在不知道怎么回事充电特别慢,要冲一天才能充满 小米手机充电的时候跳着跳着死机,冲电一天才冲了40% ...然后就自动关机 现在充电就冲的很慢 冲了两天才冲了69% 记录一次云服务器(Centos7)JVM内存调优过程 杭州火车站凌晨有没有公交到九堡的? 求最新从杭州火车站到杭州汽车东站的方法,稍微详细点 从杭州城站坐出租车到九堡客运中心需要多久? 印度舞曲lululu 噜噜噜 是什么歌 为什么现代年轻人更倾向于晚婚? 这个小姑娘表情叫啥名字,有没有一套的表情包? ...绳子长20米剪下5米去修理球网剩下的绳子每4米做一根跳绳可以做几 ...个绳子长30米剪下六米后修理网球还剩多少米剩下的每三米做一根... 一根16米长的绳子,做跳绳用了8米,修网球用了5米,这根绳子少了多少米?还... 求此女名字,电影(或电视剧)出处 王者荣耀情侣名字大全 有趣沙雕的情侣名 带君的有寓意男孩名字君字起名带解释推荐? 人逝后各类负债如何处置? 人忽然死亡后债务该怎样办 欠债人死亡后债款怎么解决 ...A.古猿从树栖生活转到地面上生活B.四肢行走转 曲靖市中小学高级教师评审方案 PPT发布到微信公众号软件 涿州金品时代装修哪家装修公司靠谱?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com