1:Feign底层发起http请求,依赖于其它的框架。其底层客户端实现包括:
• URLConnection:默认实现,不支持连接池
• Apache HttpClient :支持连接池
• OKHttp:支持连接池
因此提高Feign的性能主要手段就是使用连接池代替默认的URLConnection。
2:具体实现
1)引入依赖(在服务消费者中)
<!--httpClient的依赖 -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
2)配置连接池(其中最大连接数和每个路径最大连接数并不是写死的,要根据具体业务去用Jmeter进行压测,得到最佳的数值。)
feign:
client:
config:
default: # default全局的配置
loggerLevel: BASIC # 日志级别,BASIC就是基本的请求和响应信息
httpclient:
enabled: true # 开启feign对HttpClient的支持
max-connections: 200 # 最大的连接数
max-connections-per-route: 50 # 每个路径的最大连接数
3:总结,Feign的优化:
1.日志级别尽量用basic
2.使用HttpClient或OKHttp代替URLConvion
① 引入feign-httpClient依赖
② 配置文件开启httpClient功能,设置连接池参数