Feign介绍与应用(包含Feign优化)

编程入门 行业动态 更新时间:2024-10-05 17:23:19

<a href=https://www.elefans.com/category/jswz/34/1768189.html style=Feign介绍与应用(包含Feign优化)"/>

Feign介绍与应用(包含Feign优化)

一、Feign概述

Feign是Spring Cloud提供的声明式、模板化的HTTP客户端, 它使得调用远程服务就像调用本地服务一样简单,只需要创建一个接口并添加一个注解即可。

Spring Cloud集成Feign并对其进行了增强,使Feign支持了Spring MVC注解;Feign默认集成了Ribbon所以Fegin默认就实现了负载均衡的效果

二、Feign参数的传递

1、引入Feign的依赖

2、传参方式:

2.1restful风格:

feign接口:@PathVarible【拼接restful形式的url】

Feign客户端

 Feign的接口

 启动类开启feign的扫描

测试

 

 2.2   问号  ?传参

feign接口:@RequestParam【拼接?形式的url】

Feign客户端

Feign接口

测试

2.3  pojo传参

provider: @RequestBody User user【获取请求体中的json串】

客户端

接口

 

测试

三、Feign的工作原理

1、将feign接口扫描到spring的容器

          @EnableFeignClients开启feign的注解扫描,扫描被@FeignClient的接口生成代理类,并把代理类交给spring容器管理

 2、为接口的方法创建RequestTemplat

        当定义的的Feign接口中的方法被调用时,通过JDK的代理方式为Feign接口生成了一个动态代理类,当生成代理时,Feign会为每个接口方法创建一个RequestTemplate。该对象封装了HTTP请求需要的全部信息,如请url、参数,请求方式等信息都是在这个过程中确定的。

3、发起请求

        发送请求时会通过RequestTemplate创建一个Request对象,然后Clien使用Request对象发送请求

四、Feign的优化

1、Http连接池

两台服务器建立HTTP连接的过程涉及到多个数据包的交换,很消耗时间。采用HTTP连接池可以节约大量的时间提示吞吐量。FeignHTTP客户端支持3种框架:HttpURLConnectionHttpClientOkHttp。为了性能考虑,我们可以引入httpclientokhttp作为底层的通信框架。

添加依赖测试是否开启 

feign.SynchronousMethodHandler#executeAndDecode()这个方法中可以清楚的看出调用哪个 client。

2、开启日志

在客户端的yml里面配置

3、GZIP 压缩

当 Gzip 压缩到一个纯文本文件时,效果是非常明显的,大约可以减少 70% 以上的文件大小,网络数据经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可 以加快网页加载的速度。网页加载速度加快的好处不言而喻,除了节省流量,改善用户的浏 览体验外,另一个潜在的好处是 Gzip 与搜索引擎的抓取工具有着更好的关系。例如 Google 就可以通过直接读取 gzip 文件来比普通手工抓取 更快地检索网页。

测试

 

 

4、 Feign超时优化  

 数据太多的话查询的速度会变得慢一些,导致查询不出,所以需要指定的超时时间

方法一: 使用ribbon定时

 

方法二:使用feign定时

 

 

 

 

更多推荐

Feign介绍与应用(包含Feign优化)

本文发布于:2024-02-28 04:08:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768157.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Feign

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!