连接池

对于 HTTP 流量,Envoy 支持在底层协议(HTTP/1.1 或 HTTP/2)之上的抽象连接池。过滤器代码不需要知道底层协议是否支持真正的复用。 在实践中,底层实现具有以下高级属性:

HTTP/1.1

HTTP/1.1 连接池根据需要获取上游主机的连接(取决于断路限制)。当连接变得可用时,请求被绑定到连接,这可能是因为连接完成先前请求的处理,或者因为新的连接已经准备好可以接收第一次请求。HTTP/1.1 连接池不使用流水线,因此如果上游连接被切断,只有一个下游请求必须重置。

HTTP/2

HTTP/2连接池获取到上游主机的单个连接。所有请求都通过此连接复用。如果收到 GOAWAY 帧,或者连接达到最大流限制,连接池将创建新的连接并且耗尽现有连接。 HTTP/2 是首选的通信协议,因为连接很少会被切断。

健康检查交互

如果 Envoy 配置有主动或被动健康检查,则代表从健康状态转换为不健康状态的主机将关闭所有连接池连接。如果主机重新进入负载均衡轮换,它将创建新的连接,这将最大化解决流量不佳(由于 ECMP 路由或其他原因)的机会。