目录



前言

记录下​​Feign​​的性能调优方式,在微服务内部调用接口主要有​​RestTemplate​​和​​Feign​​方式来实现,其都是​​Http​​的

  • RestTemplate在微服务当中与注解@LoadBanlance注解结合使用, 可以通过服务名进行模块之间的接口调用
  • Feign默认集成了ribbon,用它也可以通过服务名进行模块之间的接口调用


RestTemplate 和 Feign
  • ​RestTemplate​​和 ​​Feign​​的比较

角度

RestTemplate

Feign

可读性、可维护性

一般

极佳

开发体验

欠佳

极佳

性能

很好

中等(RestTemplate的50%左右)

灵活性

极佳

中等(内置功能可满足大多数需求)


Feign 的性能调优方式

配置连接池

默认情况下,​​feign​​使用​​urlconnection​​去请求,而​​urlconnection​​是没有连接池的,​​feign​​除了可以使用​​urlconnection​​去发送请求还支持使用​​apache​​的​​httpclient​​以及​​okhttp​​去发送请求

httpclient 连接池配置

  • ​pom.xml​
<!-- httpclient -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>


  • ​application.yml​
# 自定义配置 feign 日志级别
feign:
httpclient:
# 使用 apache httpclient做请求,而不是默认的 urlconnection
enabled: true
# feign的最大连接数
max-connections: 200
# feign单个路径的最大连接数
max-connections-per-route: 50


okhttp 连接池配置

  • ​pom.xml​
<!-- okhttp -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
<version>10.1.0</version>
</dependency>


  • ​application.yml​
feign:
httpclient:
# feign的最大连接数
max-connections: 200
# feign单个路径的最大连接数
max-connections-per-route: 50
okhttp:
# 使用 okhttp 做请求,
enabled: true


  • 连接池的配置对性能的提升大概在​​15%​​左右


设置合适日志级别

  • ​feign​​的日志级别

级别

打印内容

NONE(默认值)

不记录任何日志

BASIC

仅记录请求方法、URL、响应状态代码以及执行时间

HEADERS

BASIC级别的基础上,记录请求和响应的header

FULL

记录请求和响应的header、body和元数据

  • ​feign​​默认不打印任何日志,生产环境建议设置日志级别为​​BASIC​​,仅记录请求方法、​​URL​​、响应状态代码及执行时间


- End - ﹀ ﹀ ﹀ 白嫖有风险 点赞加收藏

SpringCloudAlibaba - Feign 的性能调优_连接池


以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦

本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。