乐趣区

关于springboot:SpringBootUniapp实战开发全新仿抖音短视频App

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

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

请求通信连接优化
超时优化
负载平衡
数据压缩
日志级别优化

一、请求通信连接优化
OpenFeign 底层通信组件默认使用 JDK 自带的 URLConnection 对象进行 HTTP 请求的,因为没有使用连接池,所以性能不是很好。咱们可能将 OpenFeign 的通信组件,手动替换成像 Apache HttpClient 或 OKHttp 这样的专用通信组件,这些的专用通信组件自带连接池可能更好地对 HTTP 连接对象进行重用与治理,同时也能大大的晋升 HTTP 请求的效率。接下来我以 Apache HttpClient 为例,演示一下专用通信组件的替换使用。
1.1 增加 pom 依赖
<!– 增加 openfeign 框架依赖 –>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!– 增加 httpclient 框架依赖 –>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
复制代码
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 的日志级别,抉择合适的日志输入级别,防止有效的日志输入。

退出移动版