问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2024-11-05 23:21

我来回答

1个回答

热心网友 时间:2024-11-05 23:34

欢迎来到本篇文章,之前我们已经深入探讨了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源码有更深入的认识。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
折儿是什么意思? 什么叫饭折? 饭折是什么意思 私募股权基金6种模式 私募投资业务管理系统 火山仙泉天然矿泉水产品特点 用苏打片带吃带洗真的能生男孩吗 凡山天然苏打水怎么样 美的面包机和面要多久 美的面包机和面的时间要多长 美的面包机怎么用手动操作 怎样选购笔记本电脑怎样选购笔记本电脑包 海南芒果种类有哪些 0怎么设置铃声ios7? 主板设置成ahci为什么不行呢? 山大文科目前最好就业的专业 山大汉语言文学专业就业前景 山大的汉语言文学方面的考研好考吗 我的世界空气炮制作方法介绍介绍_我的世界空气炮制作方法介绍是什么 诛仙3天道戒指升级顺序 女生生气了就哭闹随便哄一下就好了 不生气了经常和男朋友说想你想你爱啊... ...有什么都忍不住说然后一直哭 哭完了就好了 女生什么性格?_百度... ...男朋友哄一下就开心了撒娇那样 这个女生什么性格? 二战中日本投降时有哪些日本的人物切腹 对比赛的祝福语 泰山花海景区地址在哪里? 天颐阁地址在哪里? 上海2022下半年教师资格考试时间安排及注意事项 ...现在不知道怎么回事充电特别慢,要冲一天才能充满 小米手机充电的时候跳着跳着死机,冲电一天才冲了40% ...然后就自动关机 现在充电就冲的很慢 冲了两天才冲了69% 记录一次云服务器(Centos7)JVM内存调优过程 杭州火车站凌晨有没有公交到九堡的? 求最新从杭州火车站到杭州汽车东站的方法,稍微详细点 从杭州城站坐出租车到九堡客运中心需要多久? 印度舞曲lululu 噜噜噜 是什么歌 为什么现代年轻人更倾向于晚婚? 这个小姑娘表情叫啥名字,有没有一套的表情包? ...绳子长20米剪下5米去修理球网剩下的绳子每4米做一根跳绳可以做几 ...个绳子长30米剪下六米后修理网球还剩多少米剩下的每三米做一根... 一根16米长的绳子,做跳绳用了8米,修网球用了5米,这根绳子少了多少米?还... 求此女名字,电影(或电视剧)出处 王者荣耀情侣名字大全 有趣沙雕的情侣名 带君的有寓意男孩名字君字起名带解释推荐? 人逝后各类负债如何处置? 人忽然死亡后债务该怎样办 欠债人死亡后债款怎么解决 ...A.古猿从树栖生活转到地面上生活B.四肢行走转 曲靖市中小学高级教师评审方案 PPT发布到微信公众号软件 涿州金品时代装修哪家装修公司靠谱?