Feign的性能优化

这篇具有很好参考价值的文章主要介绍了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

Feign的性能优化

二,性能优化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 可以不写

Feign的性能优化

Feign的性能优化 如图我们可以看到使用的是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

Feign的性能优化

 Feign的性能优化

 四,性能优化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;
    }

Feign的性能优化

Feign的性能优化在平时,会因为网速慢等原因导致访问超时,所以提高连接超时时间和读取超时时间可以有效的提高程序的性能。

application.yml文件的配置:

ribbon:
  ConnectionTimeout: 5000
  ReadTimeout: 5000

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

 Feign的性能优化文章来源地址https://www.toymoban.com/news/detail-402957.html

到了这里,关于Feign的性能优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Feign简介及使用

    在实际开发中,我们对某些服务的调用可能不止于一处,往往一个接口会被多处调用,所以我们通常都会针对各个微服务自行封装一些客户端累来包装这些依赖服务的调用 由此,Spring Cloud Fegin在Spring Cloud Ribbon的 RestTemplate基础上做了进一步封装, 在Spring Cloud Feign的实现下,只

    2023年04月08日
    浏览(21)
  • SpringCloud:Feign的使用及配置

    目录 Feign的使用及配置 1、Feign替代RestTemplate 2、使用Fegin步骤 3、自定义配置 4、Feign使用优化 5、Feign的最佳实践方式 1、Feign替代RestTemplate RestTemplate方式远程调用的问题  问题: 1、代码可读性差,编程体验不同统一 2、参数复杂,URL难以维护 Feign介绍 Feign是一个声明式的htt

    2024年02月08日
    浏览(29)
  • 【云原生】微服务之Feign的介绍与使用

    前言: 最近在学习微服务相关的知识,看了黑马的相关课程,将关于Feign的知识又总结了一些,希望能帮到各位小伙儿们以及加深下自己的印象🎊 如果文章有什么需要改进的地方还请大佬多多指教🥂 小威先感谢大家的支持了😁 🏠个人主页:小威要向诸佬学习呀 🧑个人简

    2023年04月08日
    浏览(33)
  • 【Spring Cloud】如何使用Feign实现远程调用

    本次示例代码的文件结构如下图所示。 在 order-service 的 pom.xml 文件中导入 Feign 的依赖坐标。 在 order-service 的启动类上添加注解 @EnableFeignClients ,以开启 Feign 功能。 Feign 采用了 Spring MVC 的注解的方式发起远程调用。只需要把发 HTTP 请求的信息声明在一个接口中,并添加注解

    2024年02月13日
    浏览(47)
  • Java feign使用okhttp跳过https安全校验

    今天调用微软Azure OpenAI时报错了,百度一番发现需要https证书,后来想能不能跳过校验呢,费心良苦实验一番终于实现 代码如下 OK,齐活~

    2024年02月16日
    浏览(48)
  • 关于使用Feign来实现微服务之间的文件下载

    在微服务当中,不同的服务之间需要进行通信,不乏微服务之间使用feign进行文件的下载上传使用场景。下边介绍如何使用Feign来进行微服务之间的下载excel 背景 :前两天做的一个需求,需要专门为材积信息而新启一个服务,其他系统调用此服务来进行获取产品的一些材积信

    2024年02月14日
    浏览(65)
  • 【SpringCloud Alibaba】(四)使用 Feign 实现服务调用的负载均衡

    在上一文中,我们实现了服务的自动注册与发现功能。但是还存在一个很明显的问题:如果用户微服务和商品微服务在服务器上部署多份的话,之前的程序无法实现服务调用的负载均衡功能。 本文就带着大家一起实现服务调用的负载均衡功能 负载均衡:将原本由一台服务器

    2024年02月15日
    浏览(41)
  • SpringCloud微服务环境中,使用Feign跨服务调用Api

    在微服务中,很多时候都需要调用其他小组的服务接口,这里记录一下使用Feign调用其他服务的过程。 第一步,导入依赖:  第二步,被调用服务编写接口:  第三步,调用服务端启动类上添加@EnableFeignClients  第四步,编写调用API接口,接口上添加@FeignClient注解,注解的na

    2024年02月10日
    浏览(40)
  • SpringBoot 使用 Feign 无废话 All-in-one 指南

    Feign 是声明式、模板化的 HTTP 客户端, 可以帮助我们更快捷、优雅地调用 HTTP API;Spring Cloud 为 Feign 添加了 Spring MVC 的注解支持,并整合了 Ribbon 和 Eureka 来为使用 Feign 时提供负载均衡;在 Spring Cloud 中使用 Feign 是非常容易的。 本篇主要介绍 SpringBoot 中要玩转 Feign 需要掌握的

    2023年04月09日
    浏览(47)
  • Spring Boot进阶(73):Spring Boot如何优雅地使用Feign进行服务间通信?

            在分布式系统中,服务间通信是非常常见的情况。而Feign就是一个开源的Java HTTP客户端,可以帮助我们在Spring Boot应用中快速构建和使用HTTP客户端,方便实现服务间的通信。本文将介绍如何优雅地使用Feign进行服务间通信。         那么,具体如何实现呢?这将又

    2024年02月06日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包