知识卡片
七层负载均衡用一轮握手换应用层智能路由能力
内容
[[四层负载均衡三种转发模式的三角传输与代价对比]]都是”转发”,客户端和真实 服务器共用同一条TCP连接;七层负载均衡工作在应用层,只能做”代理”——客户端 到均衡器、均衡器到真实服务器是两条独立的TCP连接,因此比四层至少多一轮 握手,还要耗费更多CPU去解析应用层协议内容,网络性能天然不如四层。但它 换来的是”能看懂内容”带来的智能决策能力:可以做静态资源缓存直接返回(无须 转发到真实服务器)、按Session/URL/用户身份做更精细的路由(相当于网关或 VIP服务)、在均衡器层面就过滤掉SYN Flood这类利用四层无法感知应用层内容 的攻击、也是微服务架构里做熔断/降级/异常注入这类链路治理的唯一选择—— 因为四层均衡器只能感知”服务器是否还能应答TCP”,一台服务器只要能应答但 一直返回500错,四层均衡器对此完全无能为力。原文用”自助排号机”(四层, 转发快但不知疲倦)和”银行大堂经理”(七层,先了解你要办什么业务再决定怎么 处理)做类比,抓住了这个权衡的本质:牺牲纯转发效率换取”理解内容后再决策” 的能力。
参考来源
- 位置:《凤凰架构:构建可靠的大型分布式系统》第4章"透明多级分流系统"
4.5.3节"应用层负载均衡"(源文件:_epub-src对应OEBPS/Text/chapter51.xhtml)
- 结论依据:原文说明七层负载均衡属于反向代理、比四层多一轮握手且更耗
CPU,但能做静态资源缓存、智能路由、防御SYN Flood、微服务链路治理等
四层无法做到的事,并用银行排号机/大堂经理做类比,直接支撑本卡片结论。
- 原始内容:七层负载均衡器就像银行大堂经理,他会先确认客户需要办理的
业务,再安排排号……一台服务器只有出现物理层面或者系统层面的故障,
导致无法应答TCP请求时才能被四层负载均衡器感知……如果一台服务器能够
应答,只是一直在报500错,那四层负载均衡器对此是完全无能为力的。