一、为什么要优化Feign
1.1 什么是Feign
Feign是—个声明式、模板化的HTTP客户端
在HTTP协议中,发送请求的一方就是HTTP 客户端,在JAVA 中,有很多HTTP 客户端框架。
实际Feign 集成简化了其他HTTP 客户端框架,实际发送请求是由Feign 中的Client接口实现类去处理的,默认使用的是Defalut 类,该类使用的是HttpURLConnection。
1.2 为什么Feign需要优化
既然发送请求,是由Feign 中的Client接口实现类去处理的。
那么必然遵循HTTP通信过程:
在HTTP 通信的过程中,建立连接是一个很复杂的过程,涉及到多个数据包的交换,很耗时间。
而且HTTP连接需要3次握手和4次挥手开销都很大。
如果没有连接池那么将会反复创建与销毁,在请求量上来的时候,将会导致接口响应变慢,整体时间变长。
所以采用HTTP连接池,节约大量的3次握手4次挥手时间,提升吞吐量。
1.3 skywalking 查看feign阻塞
如下图1,通过skywalking 观察
高并发压测流量突增时,请求