什么是Feign?

服务间调用介绍

现有的服务调用方式

利用拼接的方式。
在这里插入图片描述
虽然上面有的用不错就很好了

在这里插入图片描述

Feign解决了什么问题

在这里插入图片描述

Feign的调用方式

在这里插入图片描述

Feign体系架构解析-武装到牙齿

上一节我们了解了feign的主要功能,它就像一个自拍杆一样,方便了Eureka的远程调用。可是怎么看都觉得Feign的功能很简单嘛,职责也比较单一,那它和Ribbon一样,都是大闲人了?
正所谓麻雀虽小五脏俱全,HTTP调用看着简单,实则下面隐藏的是一套非常复杂的流程。从上古时代jsp+servlet,到后面的SpringMVC,在HTTP请求解析和封装上同样是煞费苦心。

在这里插入图片描述
我们在学习中经常会碰到这种case,有些开源组件不显山来不露水,乍一看功能很简单,配置起来也不麻烦,让人感觉实现起来也不难。实际上我们所看到的只是冰山上的一角,在冰山下面隐藏的巨大基座才是这套技术的全貌。

Feign就是这样一位被武装到牙齿的特工,Feign的每个运作流程都包含了复杂的业务处理,Netflix对Feign更是关爱有加,甚至还给配备了两件重武器:Ribbon和Hystrix。由于Feign的调用链路比较长,所以我删减了很多支线剧情,只玩主线剧情,我们分为上下半场两张图给大家介绍Feign的架构全貌。
如果用一句话来介绍Feign,那就是:声明一个代理接口,服务调用者通过调用这个代理接口的方式来调用远程服务。这样一来,调用远程方法就如同调用本地接口一样方便。

上半场 - 构建请求

在这里插入图片描述
左右护法:大伙现在看出Feign是个什么腕儿了吗?看那身旁站着Ribbon和Hystrix,左青龙右白虎,给Feign保驾护航。没错,Feign自己兜里就揣着Ribbon和Hystrix两把重武器,引入Feign依赖的同时这两个组件也会被一同引入。Ribbon:利用负载均衡策略选定目标机器
Hystrix:根据熔断器的开启状态,决定是否发起此次调用
动态代理:Feign是通过一个代理接口进行远程调用,这一步就是为了构造接口的动态代理对象,用来代理远程服务的真实调用,这样你就可以像调用本地方法一样发起HTTP请求,不需要像Ribbon或者Eureka那样在方法调用的地方提供服务名。在Feign中动态代理是通过
Feign.build
返回的构造器来装配相关参数,然后调用ReflectFeign的newInstance方法创建的。这里就应用到了Builder设计模式,稍后番外篇会给大家说一个实现Builder模式的简单方法。
Contract:协议,顾名思义,就像HTTP协议,RPC协议一样,Feign也有自己的一套协议的规范,只不过他解析的不是HTTP请求,而是上一步提到的动态代理类。通过解析动态代理接口+Builder模式,Contract协议会构造复杂的元数据对象MethodMetadata,这里面包含了动态代理接口定义的所有特征。接下来,根据这些元数据生成一系列MethodHandler对象用来处理Request和Response请求。Contract具有高度可扩展性,可以经由对Contract的扩展,将Feign集成到其他开源组件之中。

关于Builder模式

Builder是设计模式中的一种,用来简化复杂组件的装配过程,假如用传统方式构建一个House类,那应该是这样写:

House house = ne House();
house.setWindow(“open”);
house.setDoor(“close”);

而Builder模式是用链式构造的方式创建复杂对象,比如这种形式

House.builder().window(“open”).door(“close”).build()

这里教大家一个简单的实现方式,那就是lombok小工具的@Builder注解,只要在pom中添加lombok依赖,并且在IDE中添加lombok的插件,就可以用注解的方法,不用写一行代码就能实现Builder模式。

发起调用

在这里插入图片描述

拦截器 :拦截器是Spring处理网络请求的经典方案,Feign这里也沿用了这个做法,通过一系列的拦截器对Request和Response对象进行装饰,比如通过RequestInterceptor给Request对象构造请求头。整装待发之后,就是正式发起调用的时候了。
发起请求:又到了左右护法的出场镜头了。这哼哈二将绝不放过开头和结尾两处重要镜头,正所谓从头到尾都参与了进来。重试:Feign这里借助Ribbon的配置重试器实现了重试操作,可以指定对当前服务节点发起重试,也可以让Feign换一个服务节点重试。
降级:Feign接口在声明时可以指定Hystrix的降级策略实现类,如果达到了Hystrix的超时判定,或得到了异常结果,将执行指定的降级逻辑。Hystrix降级熔断的内容,将在下一个大章节和大家见面。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

简单理解Feign的原理与使用

文章目录 SpringCloud 总架构图一、简介1.1、负载均衡的概念2.2、Feign概念 二、入门案例2.1、导入依赖2.2、Feign的客户端2.3、调用Feign2.4、开启Feign功能2.5、启动测试2.6、Feign实现原理简单分析 三、负载均衡(Ribbon)四、熔断器支持五、请求压缩和响应压缩六、配置日志级…

Feign基本使用(超详细)

目录 一、Feign概述 二、Feign入门 1.创建服务提供者(provider) 2.创建feign接口 3、创建服务消费者(consumer) 三、Feign 原理 四、Feign优化 1、开启feign日志 2、feign超时问题 3、http连接池 4、gzip压缩 前言 当我们通过RestTemplate调用其它服务的API时,所…

中外黑客两则

外国一则:丹尼斯麦卡利斯泰尔里奇。挑选他的原因:帅。 (英语:Dennis MacAlistair Ritchie;1941年9月9日-2011年10月12日[3][4]),著名的美国计算机科学家,对C语言和其他编…

git使用X篇_2_Git全套教程IDEA版(git、GitHub、Gitee码云、搭建公司内部GitLab、与IDEA集成等内容)

本文是根据以下视频及网上总结进行更新后的介绍git使用的博文。包含了git、GitHub、Gitee码云、搭建公司内部GitLab、与IDEA集成等内容。 笔记来源:【尚硅谷】5h打通Git全套教程IDEA版(涵盖GitHub\Gitee码云\GitLab) 文章目录 初识 Git0、内容…

Axure原型模板、元件库、组件库

在产品设计中,随时会使用到相似场景,每次都反复绘制耗时耗力。 若使用通用模板即可快速提高设计效率。 下面给大家提供一个登录多种验证系统框架模板,可快速修改使用。 预览链接: Axure高保真原型设计、Axure元件库、产品交互…

AXURE9最全的WEB设计元件库(分享版).rplib

Axure9常用到的WEB设计元件库,在Axure点击号即可导入元件库使用,或者打开Axure R9安装目录,进入DefaultSettings\Libraries,复制资源到此目录并重启Axure软件即可看到。 文件:590m.com/f/25127180-481124286-469239 &…

Axure移动端通用元件库rplib格式包含安卓、苹果各种主流手机、平板线框图元件库、IOS系统图标、人物图标、导航和分页、表格元素、各种小图标、移动元件库、axure元件库、axure原型

Axure移动端通用元件库rplib格式包含安卓、苹果各种主流手机、平板线框图元件库、IOS系统图标、人物图标、导航和分页、表格元素、各种小图标等 移动端通用元件库、app通用元件库、数据展示、操作反馈、通用模板、数据录入、列表页、表单页、详情页、通用版布局、移动端手机模…

Axure导入元件库和使用

下载元件库 vant 元件库下载: Vant - Mobile UI Components built on Vue element UI 元件库下载:https://element.eleme.cn/#/zh-CN/resource 以vant示例,下载完成后解压 我们看到有.rp和.rplib格式的文件 rp文件可以理解为一个别人设计好的原型作品。 rplib是原…

【Axure9.0原型实战(一)】Axure9.0的元件库的使用、导入、制作、路径等操作方法与技巧(附Axure元件库大全)

Axure9.0的元件库 文章目录 Axure9.0的元件库Axure9.0的元件库大全1.windows系统加载元件库2.MAC系统加载元件库3.新加入一些元件库4.自己建立元件库 Axure9.0的元件库大全 链接:https://pan.baidu.com/s/18VWM9R1qgFAXXz8Xooq4-A 提取码:u2gx 1.windo…

Axure RP9 的元件库

Axure的元件库 1.加载元件库 可以通过导入一些现有的元件库,来提高绘制的效率及美观性。 (1)windows系统: 将准备好的元件库复制到Axure 根目录下-【DefaultSettings】-【Libraries】中;移动成功后,重启…

嵌入式linux音乐电子相册制作软件,ApowerShow – 超级轻便的在线照片音乐视频制作软件...

有没有什么好用的照片视频制作软件呢?我大概对比了一下国内的其他软件,发现转场效果很多,但是需要自己去添加。它们的界面感觉有点繁琐,不是那么简洁。 其实除了使用国内的照片视频制作软件,你还可以使用ApowerShow。它…

html立体音乐相册源码,印记工坊立体音乐相册 v 1.8 官方版|印记工坊立体音乐相册官方版|印记工坊立体音乐相册电脑版_最火软件站...

印记工坊立体音乐相册包含多种多样的模板可以供用户使用,制作多种样式的电子相册,是一款傻瓜式视频音乐相册制作工具,及时是毫无制作经验的用户也能创作出精美的相册。最火软件站提供下载。 软件特色 故事视频制作 MV展示视频相册 时间轴视频制作 时光轴…

html动感音乐相册,动感音乐相册

动感音乐相册app是一款超级好用的音乐相册软件,这款软件上的功能丰富,能够帮助用户进行照片编辑,制作幻灯片等等,还能在线选择背景音乐进行添加,让相册每次打开都有不一样的感觉,喜欢的朋友快来下载吧。 动…

视频删了怎么恢复

视频无处不在,记录着各种有意义的画面,那么一旦重要的视频文件删除了该怎么恢复呢?甲驭科技数据恢复小编教您如何操作恢复。 目前视频的录制主要是各种相机摄像机录制或者手机录制的,这里以相机摄像机录制视频恢复为例,讲述如何快…

大疆无人机视频恢复成功

随着大疆的用户越来越多,大疆在拍摄过程中也使用的越来越多,经常会有客户格式化或许其他误操作导致拍摄的数据丢失情况。希贝软件目前提供全系列大疆恢复方案,因为大疆无人机的碎片多样化,导致目前没有软件能够支持所有型号大疆录…

手机删除的视频怎么恢复?即刻扫描,快速恢复

手机里的照片跟视频一样,都存在于相册中,所以恢复的方法也异曲同工,不过视频所占用的内存比照片大很多,所以很多时候,拍的视频发送出去之后就会删掉,那么手机删除的视频怎么恢复?小编给大家推荐…

win10电脑不小心卸载的软件怎么恢复

win10电脑不小心卸载的软件怎么恢复?很多win10系统用户经常会卸载掉自己电脑中不常用的软件,来减少磁盘空间的占用率。最近就有一位win10用户向小编反映自己在删除软件的时候不小心把需要的软件卸载了该怎么恢复?针对这个问题,下面小编就为大家带来详细…

怎样恢复内存卡的视频文件?(图文操作解析)

我们的日常生活中,内存卡的使用率特别高,比如说相机、手机等电子设备都会使用内存卡。大量数据和文件都存储在内存卡中,如果内存卡发生了意外状况,丢失了重要数据,比如说视频文件时怎么办呢?怎样恢复内存卡…

佳能MP4视频恢复方法

佳能的旗下产品越来越多,型号也是日益增多。从早期的佳能5D到现在的80D中间有多个佳能型号机器用户,因为在使用的过程中会出现误操作或其他情况导致数据丢失,那么数据恢复成了必不可免的挽救数据措施,佳能其他型号录制的MOV格式如…

易佳佳能MOV视频恢复软件

有许多人都在使用佳能相机,并其所出产的MOV视频也被广泛应用到各个领域,但有时候视频丢失了该怎么办呢?那么就需要乐易佳佳能MOV视频恢复软件,这是一款超好用,且功能性质强大的专业佳能MOV视频恢复工具,不但…