Feign优化

一、开启GZIP压缩

在这里插入图片描述


server:
  compression:
    enabled: true
    mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml

feign:
  compression:
    request:
      enabled: true
      mime-types: ${server.compression.mime-types}
      min-request-size: 2048
    response:
      enabled: true

二、替换成HTTP连接池

当使用HttpClient技术作为Feign的底层HTTP技术应用时,使用GET请求方式请求头传递自定义类型对象是可行的,只要在服务标准对象中定义的方法参数上增加注解@RequestBody即可处理。

  1. 添加jar包

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
</dependency>
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
</dependency>
  1. 在application.yml文件中添加配置

    feign:
      httpclient:
        enabled: true

三、Feign请求超时配置

请求超时/请求时间: 客户端发起请求,服务端响应并成功建立双向链接的时间。
链接超时/链接时间: 双向链接建立成功后,需要多久必须得到服务端的响应结果。
在Feign声明式远程调用中,负载均衡还是使用的Ribbon技术。
而Ribbon技术默认的链接超时是1秒,也就是1秒内Application Service没有处理Application Client的请求,且链接请求处理后,1秒之内没有返回响应,Application Client都会抛出超时异常。在商业项目中,部分服务是很难在1秒之内处理链接,并在处理链接后1秒之内返回响应的,所以配置超时信息就很有必要了。
定义超时配置的时候,建议为每个服务定义超时策略。如果有部分服务可以使用同样的超时策略,可以使用全局配置。指定服务配置超时策略,会覆盖全局配置。
超时策略的使用优先级: 指定服务的超时策略 -> 全局配置的超时策略 -> 默认的超时策略。

  1. 全局服务配置

全局服务配置粒度粗糙。商业项目中不同的服务对响应时长的限制也不同,全局服务配置不推荐应用


    ribbon:
      ConnectTimeout: 5000
      ReadTimeout: 5000
  1. 部分服务配置

部分服务配置粒度细致,可以为每个具体服务配置不同的超时信息,推荐使用


    {服务名称 - Eureka控制台中的Application名称}
      ribbon:
        ConnectTimeout: 5000
        ReadTimeout: 5000
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值