Spring Cloud OpenFeign如何提升性能?五大优化策略
- 内容介绍
- 文章标签
- 相关推荐
本文共计866个文字,预计阅读时间需要4分钟。
OpenFeign 是 Spring 官方推出的声明式服务调用和负载均衡组件。它的出现是为了替代已进入维护状态的 Feign(Netflix Feign),同时它也是 Spring 官方的顶级开源项目。我们在日常使用中,可以直接使用它。
OpenFeign 是 Spring 官方推出的一种声明式服务调用和负载均衡组件。它的出现就是为了替代已经进入停更维护状态的 Feign(Netflix Feign),同时它也是 Spring 官方的顶级开源项目。我们在日常的开发中使用它的频率也很高,而 OpenFeign 有一些实用的小技巧,配置之后可以让 OpenFeign 更好的运行,所以本文我们就来盘点一下(也欢迎各位老铁评论区留言补充)。
1.超时优化OpenFeign 底层内置了 Ribbon 框架,并且使用了 Ribbon 的请求连接超时时间和请求处理超时时间作为其超时时间,而 Ribbon 默认的请求连接超时时间和请求处理超时时间都是 1s,如下源码所示:
所有当我们使用 OpenFeign 调用了服务接口超过 1s,就会出现以下错误:
因为 1s 确实太短了,因此我们需要手动设置 OpenFeign 的超时时间以保证它能正确的处理业务。
OpenFeign 的超时时间有以下两种更改方法:
-
通过修改 Ribbon 的超时时间,被动的修改 OpenFeign 的超时时间。
-
直接修改 OpenFeign 的超时时间(推荐使用)。
1.1 设置Ribbon超时时间在项目配置文件 application.yml 中添加以下配置:
ribbon: ReadTimeout: 5000 # 请求连接的超时时间 ConnectionTimeout: 10000 # 请求处理的超时时间1.2 设置OpenFeign超时时间在项目配置文件 application.yml 中添加以下配置:
feign: client: config: default: # 设置的全局超时时间 connectTimeout: 2000 # 请求连接的超时时间 readTimeout: 5000 # 请求处理的超时时间推荐使用此方式来设置 OpenFeign 的超时时间,因为这样的(配置)语义更明确。
2.请求连接优化OpenFeign 底层通信组件默认使用 JDK 自带的 URLConnection 对象进行 HTTP 请求的,因为没有使用连接池,所以性能不是很好。我们可以将 OpenFeign 的通讯组件,手动替换成像 Apache HttpClient 或 OKHttp 这样的专用通信组件,这些的专用通信组件自带连接池可以更好地对 HTTP 连接对象进行重用与管理,同时也能大大的提升 HTTP 请求的效率。接下来我以 Apache HttpClient 为例,演示一下专用通讯组件的使用。
2.1 引入Apache HttpClient依赖在项目的依赖管理文件 pom.xml 中添加以下配置:
关注下面二维码,订阅更多精彩内容。<!-- 添加 openfeign 框架依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!-- 添加 gitee.com/mydb/interview
关注公众号(加好友):
本文共计866个文字,预计阅读时间需要4分钟。
OpenFeign 是 Spring 官方推出的声明式服务调用和负载均衡组件。它的出现是为了替代已进入维护状态的 Feign(Netflix Feign),同时它也是 Spring 官方的顶级开源项目。我们在日常使用中,可以直接使用它。
OpenFeign 是 Spring 官方推出的一种声明式服务调用和负载均衡组件。它的出现就是为了替代已经进入停更维护状态的 Feign(Netflix Feign),同时它也是 Spring 官方的顶级开源项目。我们在日常的开发中使用它的频率也很高,而 OpenFeign 有一些实用的小技巧,配置之后可以让 OpenFeign 更好的运行,所以本文我们就来盘点一下(也欢迎各位老铁评论区留言补充)。
1.超时优化OpenFeign 底层内置了 Ribbon 框架,并且使用了 Ribbon 的请求连接超时时间和请求处理超时时间作为其超时时间,而 Ribbon 默认的请求连接超时时间和请求处理超时时间都是 1s,如下源码所示:
所有当我们使用 OpenFeign 调用了服务接口超过 1s,就会出现以下错误:
因为 1s 确实太短了,因此我们需要手动设置 OpenFeign 的超时时间以保证它能正确的处理业务。
OpenFeign 的超时时间有以下两种更改方法:
-
通过修改 Ribbon 的超时时间,被动的修改 OpenFeign 的超时时间。
-
直接修改 OpenFeign 的超时时间(推荐使用)。
1.1 设置Ribbon超时时间在项目配置文件 application.yml 中添加以下配置:
ribbon: ReadTimeout: 5000 # 请求连接的超时时间 ConnectionTimeout: 10000 # 请求处理的超时时间1.2 设置OpenFeign超时时间在项目配置文件 application.yml 中添加以下配置:
feign: client: config: default: # 设置的全局超时时间 connectTimeout: 2000 # 请求连接的超时时间 readTimeout: 5000 # 请求处理的超时时间推荐使用此方式来设置 OpenFeign 的超时时间,因为这样的(配置)语义更明确。
2.请求连接优化OpenFeign 底层通信组件默认使用 JDK 自带的 URLConnection 对象进行 HTTP 请求的,因为没有使用连接池,所以性能不是很好。我们可以将 OpenFeign 的通讯组件,手动替换成像 Apache HttpClient 或 OKHttp 这样的专用通信组件,这些的专用通信组件自带连接池可以更好地对 HTTP 连接对象进行重用与管理,同时也能大大的提升 HTTP 请求的效率。接下来我以 Apache HttpClient 为例,演示一下专用通讯组件的使用。
2.1 引入Apache HttpClient依赖在项目的依赖管理文件 pom.xml 中添加以下配置:
关注下面二维码,订阅更多精彩内容。<!-- 添加 openfeign 框架依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!-- 添加 gitee.com/mydb/interview
关注公众号(加好友):

