Feign是一个声明式客户端,他只是把我们的请求转化为了http请求,但是他底层要发起http请求的话还要依赖其他的客户端。
其底层客户端实现包括:
- URLConnection:默认实现,不支持连接池
- Apache HttpClient :支持连接池
- OKHttp:支持连接池
建立连接池,可以减少连接创建和销毁的性能损耗,因为连接每次创建时都要三次握手,断开时要做四次挥手,比较浪费性能。因此优化Feign的性能主要包括:
- 使用连接池代替默认的URLConnection
- 日志级别,最好用basic或none
对于日志级别的修改请参考上一个博客,这里我们说一下如何使用连接池代替默认的URLConnection。用Apache的HttpClient来演示。
1.引入依赖
在消费者服务的pom文件里引入
<!--httpClient的依赖,优化Feign的性能——使用连接池代替默认的URLConnection -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
2.配置连接池
feign:
httpclient:
enabled: true # 开启Feign对httpclient的支持
max-connections: 200 # 最大的连接数
max-connections-per-route: 50 # 单个请求路径的最大连接数
@总结
Feign的优化:
- 日志级别尽量用basic或者none
- 使用HttpClient或OKHttp代替URLConnection
- 引入feign-httpClient依赖
- 配置文件开启httpClient功能,设置连接池参数