0


Feign的性能优化

使用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文件的配置:

ribbon:
  ConnectionTimeout: 5000
  ReadTimeout: 5000

#或者是
#  client:
#    config:
#      default:
#      Feign-provider:  #具体的某个服务的超时配置
#        ConnectionTimeout: 5000
#        ReadTimeout: 5000

标签: java spring spring boot

本文转载自: https://blog.csdn.net/weixin_58683748/article/details/126908336
版权归原作者 @遗失的风 所有, 如有侵权,请联系我们删除。

“Feign的性能优化”的评论:

还没有评论