目录

一、Feign概述

二、Feign入门

1.创建服务提供者(provider)

2.创建feign接口

3、创建服务消费者(consumer)

三、Feign 原理

四、Feign优化

1、开启feign日志

2、feign超时问题

3、http连接池

4、gzip压缩



前言

当我们通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率低下。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Feign概述

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

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

在consumer的yml文件中加入以下代码

feign:  client:    config:      feign-provider: #此处写的是服务名称,针对我们feign微服务的配置,如果是default就是全局配置        loggerLevel: full #配置Feign的日志级别,相当于代码配置方式中的Logger#在application.yml中使用 logging.level. 的参数配置格式来开启指定客户端日志logging:  level:    com.bjpowernode.feign: debug

随后启动测试:

出现以下结果表示日志输出成功

2、feign超时问题

首先、Feign的负载均衡底层用的就是Ribbon,所以这里的请求超时配置其实就是配置Ribbon,当出现请求超时会出现以下报错。

注意 :当开启日志配置之后,feign超时问题不会出现报错情况。

针对超时问题我们需要在之前的日志配置中加入以下内容

ConnectTimeout: 5000 #请求连接的超时时间

ReadTimeout: 5000 #请求处理的超时时间

3、http连接池

1、连接池介绍

首先,我们知道HTTP连接需要经过三次握手,四次挥手的过程,这是很耗费性能的;所以HTTP连接池帮助我们节省了这一步。

同时Feign的HTTP客户端支持三种框架:

HttpURLConnection、HttpClient、OkHttp;默认是HttpURLConnection

2、连接池使用

先引入依赖到公共接口工厂interfac,如果没有做公共接口就放入consumer

io.github.openfeign

feign-httpclient

讲真的,其实这已经完成了,但是,我们还是要知道一下它的原理,否则显得太片面了

在配置文件中我们看到,连接池引入之后默认是开启的,所以我们就不用再写了

4、gzip压缩

压缩能力

当 Gzip 压缩到一个纯文本文件时,效果是非常明显的,大约可以减少 70%以上的文件大小。·

这个开启也是比较简单,只需要在consumer中yml文件中写入以下代码即可

此时在浏览器中就可以看到我们提供的压缩方式,和浏览器支持的压缩方式