SpringCloudAlibaba - Feign 的性能调优

前言

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

  • RestTemplate在微服务当中与注解@LoadBanlance注解结合使用, 可以通过服务名进行模块之间的接口调用

  • Feign默认集成了ribbon,用它也可以通过服务名进行模块之间的接口调用


RestTemplate 和 Feign

  • RestTemplateFeign的比较
角度RestTemplateFeign
可读性、可维护性一般极佳
开发体验欠佳极佳
性能很好中等(RestTemplate的50%左右)
灵活性极佳中等(内置功能可满足大多数需求)

Feign 的性能调优方式

配置连接池

默认情况下,feign使用urlconnection去请求,而urlconnection是没有连接池的,feign除了可以使用urlconnection去发送请求还支持使用apachehttpclient以及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、响应状态代码以及执行时间
HEADERSBASIC级别的基础上,记录请求和响应的header
FULL记录请求和响应的header、body和元数据
  • feign默认不打印任何日志,生产环境建议设置日志级别为BASIC,仅记录请求方法、URL、响应状态代码及执行时间

- End -
- 个人学习笔记 -
- 仅供参考 -

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maggieq8324

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值