4.3.3 四层负载均衡小结

由于四层负载均衡器只工作在传输层 TCP/UDP connection/session 中,不感知其转发字节所属应用的任何细节,这些字节可能是 HTTP、Redis、MongoDB 或者任何其他应用层协议,所以四层负载均衡器的应用范围非常广。

四层负载均衡的特点也是其缺点,设想如下特殊场景:

  1. 两个 gRPC/HTTP2 客户端 A 和 B 通过四层负载均衡器和后端 Server 建立连接。
  2. 四层负载均衡器为每个进来(从客户端)的连接建立一个出去的(到后端)的连接,因此有两个进来的连接和两个出去的连接。
  3. 客户端 A 的连接每分钟发送 1 个请求,而客户端 B 的连接每秒发送 50 个请求。

由于四层负载均衡器的同一个 connection/session 的字节永远落到同一后端,处理客户端 A 请求的后端相比处理客户端 B 请求的后端负载相差很多倍,这就与负载均衡目的背道而驰。

出于性能考虑(创建 TCP 连接的开销非常大,尤其连接使用 TLS 加密的时候),以及所有现代协议都在演进以支持 multiplexing(多路复用)和 kept-alive(连接保活),因此四层负载均衡器的阻抗不匹配问题随时间越来越彰显。不过也不要担心,就如同计算机专家 David Wheeler 所说:

TIP

计算机科学中的所有问题都可以通过增加一个间接层来解决。如果不够,那就再加一层。

四层负载均衡器之后再加一级七层负载均衡器,再做一次请求的分级处理,问题就能得到解决。

总字数:461
Last Updated:
Contributors: isno