SpringBoot+Uniapp实战开发全新仿抖音短视频App

download:SpringBoot+Uniapp实战开发全新仿抖音短视频App

Spring Cloud OpenFeign远程调用性能优化
分享一下OpenFeign几个方面优化的小技巧,主要分为以下几点:

恳求通讯衔接优化
超时优化
负载平衡
数据紧缩
日志级别优化

一、恳求通讯衔接优化
OpenFeign底层通讯组件默许运用JDK自带的URLConnection对象停止HTTP恳求的,由于没有运用衔接池,所以性能不是很好。我们能够将OpenFeign的通讯组件,手动交换成像Apache HttpClient或OKHttp这样的专用通讯组件,这些的专用通讯组件自带衔接池能够更好地对 HTTP 衔接对象停止重用与管理,同时也能大大的提升 HTTP 恳求的效率。接下来我以Apache HttpClient为例,演示一下专用通讯组件的交换运用。
1.1 添加pom依赖


org.springframework.cloud
spring-cloud-starter-openfeign



io.github.openfeign
feign-httpclient

复制代码
1.2 开启Apache HttpClient运用
启动Apache HttpClient,在项目配置文件application.yml中添加以下配置:
spring:
cloud:

feign:
  client:
    httpclient:
      # 默许Feign运用的是JDK自带的URLConnection停止Http恳求的,手动交换成Apache HttpClient专用的通讯组件
      enabled: true   

复制代码
考证Apache HttpClient配置能否生效,经过debug调试,在feign.SynchronousMethodHandler#executeAndDecode()办法上打端断点,经过发起一个远程调用恳求,

二、Ribbon超时优化
OpenFeign和Feign底层都内置了Ribbon负载平衡组件,在导入OpenFeign依赖后无需特地导入Ribbon依赖。OpenFeign也因而运用了Ribbon的恳求衔接超时时间和恳求处置超时时间作为其超时时间,而Ribbon默许的恳求衔接超时时间和恳求处置超时时间都是1s,

2.1 设置OpenFeign调用超时时间
在项目配置文件application.yml中添加配置:

远程调用优化

feign:
client:

httpclient:
  # 默许Feign运用的是JDK自带的URLConnection停止Http恳求的,手动交换成Apache HttpClient专用的通讯组件
  enabled: true
config:
  default: # 设置的全局超时时间
    connectTimeout: 3000 # 恳求衔接的超时时间
    readTimeout: 5000 # 恳求处置的超时时间

复制代码
2.2 设置Ribbon超时时间
ribbon:
ConnectionTimeout: 3000 # 恳求衔接的超时时间
ReadTimeout: 5000 # 恳求处置的超时时间
复制代码
经过debug的方式考证以下设置的超时时间能否生效,很明显配置曾经生效,主要看org.springframework.cloud.openfeign.FeignClientFactoryBean#configureUsingProperties()办法,

OpenFeign是Spring官方推出的一种声明式效劳调用和负载平衡组件,在消费环境中我们能够经过以下配置来优化OpenFeign的运转:

修正OpenFeign的超时时间,让OpenFeign可以正确的处置业务;
经过配置专用的通讯组件Apache HttpClient或OKHttp,让OpenFeign能够经过线程池更好地对 HTTP衔接对象停止重用和管理,以进步其性能;
开启数据紧缩功用,能够进步宽带应用率和加速数据传输速度;
运用适宜的负载平衡战略来交换默许的轮询负载平衡战略,已取得更好的执行效率;
检查生成环境中OpenFeign的日志级别,选择适宜的日志输出级别,避免无效的日志输出。

你可能感兴趣的:(springboot)