背景
你是否经常听到别人提到四层负载和七层负载,却不太明白是什么意思?其实,它们理解起来非常简单。这两个概念源自经典的网络分层模型,但它们的区别不仅仅在于理论上的层级划分,更反映了两种不同的网络流量处理方式。
概念回顾
要理解四层和七层,首先需要回顾两个基础模型:
- OSI七层参考模型:这是一个理论上的国际标准框架,将网络通信划分为七个逻辑层级,从底层的物理传输到顶层的应用程序交互。我们所说的“七层”就是指其最高层——应用层。
- TCP/IP四层模型:这是互联网实际应用中的事实标准,将网络分为四个层级。我们所说的“四层”对应的是传输层。
在实际应用中,这些术语已经演变为功能的代称:
- 四层网络:指基于IP地址和端口号进行数据转发的技术。
- 七层网络:指能够解析应用层协议内容(如 HTTP、FTP、DNS 等)并进行智能处理的技术。
核心差异
两者的根本区别在于处理数据的“智能”程度和粒度。
四层网络
工作原理
四层网络工作在传输层,核心任务是建立端到端的连接,确保数据可靠或不可靠地传输。
它的处理方式非常直接,只查看数据包中的源IP、源端口、目标IP和目标端口,不关心数据内容。
优点
- 高性能:几乎不解析数据包内容,只做简单转发,处理速度快,延迟低。
- 透明性:对后端服务器和应用完全透明,兼容所有基于TCP/UDP的上层协议。
缺点
- 缺乏智能解析:无法根据业务内容做决策。例如,不能把图片请求和API请求分发到不同服务器集群。
七层网络
工作原理
七层网络工作在应用层,需要理解数据流所用的应用层协议(如 HTTP、HTTPS)。
它会解析整个数据包内容,根据 URL 路径、HTTP 头部(如 Cookie、User-Agent)、消息体(Body)等信息进行决策。例如,“采购申请”(/api/order)会被分发到采购订单微服务,“查询请求”(/api/search)则分发到搜索微服务。
优点
- 功能强大:可实现基于内容的路由、会话保持(Session Affinity)、安全过滤(WAF)、内容优化(压缩、缓存)、API 网关等高级功能。
- 精细化流量治理:能够实现非常细致的流量控制和调度。
缺点
- 性能开销大:需要解析应用层数据,计算成本更高,会增加一定延迟。
- 协议相关:通常针对特定协议(如 HTTP)优化,对非 HTTP 协议的支持可能有限或复杂。
典型应用场景:负载均衡
场景:一个电子商务网站 www.example.com
- 使用四层负载均衡(L4 LB):
- 用户请求到达 L4 LB。
- LB 查看目标 IP 和端口(如网站的公网 IP 和 80 端口)。
- 根据简单的轮询或最小连接数算法,将 TCP 连接请求转发给后台任意一台 Web 服务器(如 192.168.1.2:80)。
- 此后,该用户的所有数据包都转发到同一台服务器。
- 结果:流量被平均分配,但 L4 LB 并不知道用户请求的是首页、商品图片还是提交订单接口。它可能会把耗时的订单请求和简单的图片请求分到同一台高负载服务器,导致负载不均衡。
- 使用七层负载均衡(L7 LB):
- 用户发送请求:GET /api/v1/orders HTTP/1.1 Host: www.example.com …
- L7 LB 会完整接收并解析这个 HTTP 请求。
- 根据解析出的信息(如 URL 路径为 /api/v1/orders),L7 LB 可以:
- 内容路由:将所有以 /api/ 开头的请求转发到后端 API 服务器集群,将所有以 /static/ 开头的图片、CSS、JS 请求转发到静态资源服务器集群或 CDN。
- 会话保持:读取请求中的 Cookie(如 JSESSIONID),确保同一登录用户的请求始终发往同一台后端服务器,维持会话状态。
- API 网关功能:实现身份验证、速率限制、请求和响应转换等。
- 结果:流量能够根据业务需求智能分发到最合适的服务单元,实现资源利用最大化。
如何选择?
选择四层:
- 应用协议不是 HTTP/HTTPS(如数据库、游戏、视频流)。
- 追求极致性能和最低延迟。
业务场景简单,仅需高可用和基础流量分发。
选择七层:
- 业务为 Web 服务。
- 需要基于内容的智能路由、API 网关、高级安全防护等功能。
- 架构为微服务,需要将流量精准路由到不同的微服务。
总结
在当前复杂的微服务架构中,很少只使用单一层级的负载均衡,更多情况下是多层混合使用,实现优势互补。
一个典型的现代架构可能包括:
- 入口层:采用四层负载均衡,承接大量外部网络连接,凭借高性能应对 DDoS 攻击,并完成初步流量分发。
- 网关层:在内部,使用七层负载均衡或 API 网关(如 Nginx、Envoy、Kong)进行精细化流量治理,包括服务发现、熔断降级、认证授权和监控日志等。