使用feign之前需要引入相关的依赖 (在服务消费端也就是客户端使用)
<!--Spring Cloud OpenFeign Starter --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
application.yml
server:
port: 8195
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.122.131:8848
application:
name: Feign-consumer
一,性能优化1----设置合理的日志
OpenFeign提供了日志打印的功能,我们可以调整日志的输出级别,去了解OpenFeign的http请求的细节。即对OpenFeign远程接口调用的情况进行监控和日志输出。
OpenFeign的日志级别:
- NONE:默认级别,不显示日志
- BASIC:仅记录请求方法、URL、响应状态及执行时间
- HEADERS:除了BASIC中定义的信息之外,还有请求和响应头信息
- FULL:除了HEADERS中定义的信息之外,还有请求和响应正文及元数据信息
OpenFeign的默认日志级别为NONE,不记录任何请求信息,SpringBoot默认的日志级别是info,而FeignClient日志级别是debug,debug<info。所以当我们修改完FeignClient的日志级别后,需要修改SpringBoot的日志级别为debug,日志输出才会生效。
application.yml文件的配置:
feign:
client:
config:
default: #表示所有的feign 也可以写具体的feign
loggerLevel: full #开启feign日志
logging:
level:
com.xxx.feign: debug
二,性能优化2----http连接池的配置
Feign默认使用HttpURLConnection去发送请求,每次请求都会建立、关闭连接,很消耗时间。但是Feign还支持使用Apache的httpclient 以及OKHTTP去发送请求,其中Apache的HTTPClient和OKHTTP都是支持连接池的。
http连接池省去了tcp的3次握手和4次挥手的时间,可以节约大量的时间。
使用httpclient
1,加入依赖
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
2,application.yml文件的配置:
feign:
httpclient:
enabled: true #默认是ture 可以不写
如图我们可以看到使用的是http连接池的方式。
三,性能优化3----gzip压缩
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
介绍:Gzip是若干种文件压缩程序的简称,是一种数据可是,采用DEFLATE无损数据压缩算法。
作用:Gzip压缩纯文本是的效果非常好,可以减少70%以上的文件大小,压缩后可以大大降低了网络传输的字节数,使用Gzip的好处就是可以加快网页加载的速度
1,项目中启用gzip压缩:1和2两过程可以只开一个压缩,也可以两个过程都开压缩
# (1)浏览器和consumer之间的压缩
server:
compression: #是否开启压缩
enabled: true #浏览器<------>consumer的gzip压缩
#配置支持的压缩mime-types 下面的是默认值,可以不写
mime-types: text/html,text/xml,text/plain,application/xml,application/json
# (2)consumer与provider之间的压缩
feign:
compression:
request:
enabled: true #consumer<------>provider的gzip压缩
#配置支持的压缩mime-types 下面的是默认值,可以不写
mime-types: text/html,text/xml,text/plain,application/xml,application/json
response:
enabled: true
四,性能优化4----feign超时
对服务提供的peovider的service实现类改造
@Override
public User addUser(User user) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
user.setName(user.getName() + "@遗失的风添加了123");
return user;
}
在平时,会因为网速慢等原因导致访问超时,所以提高连接超时时间和读取超时时间可以有效的提高程序的性能。
application.yml文件的配置:文章来源:https://www.toymoban.com/news/detail-402957.html
ribbon:
ConnectionTimeout: 5000
ReadTimeout: 5000
#或者是
# client:
# config:
# default:
# Feign-provider: #具体的某个服务的超时配置
# ConnectionTimeout: 5000
# ReadTimeout: 5000
文章来源地址https://www.toymoban.com/news/detail-402957.html
到了这里,关于Feign的性能优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!