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

发布于:2022-12-20 ⋅ 阅读:(321) ⋅ 点赞:(0)

一、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定时

 

 

 

 


网站公告

今日签到

点亮在社区的每一天
去签到