在开源 PaaS Rainbond https://www.rainbond.com/ 中, 我们对各种应用层协议匹配不同的网络治理插件, 以实现 7 层负载均衡(layer 7 load balancing), 例如 HTTP,gRPC,Redis 等协议. 原因在于对于一些在线环境, 我们希望可以对服务间调用实现热更改或者更好的容错, 比方说 A/B 测试, 灰度发布等等, 必须要在 7 层负载均衡上完成.
那么什么是 7 层均衡, 它跟 4 层负载均衡 (layer 4 load balancng) 有何不同?
7 层负载均衡和 4 层负载均衡之间的区别
4 层负载均衡在中间传输层执行, 它处理消息的传递, 但不考虑消息的内容. 例如 TCP 是网络上 Hypertext Transfer Protocol(HTTP)流量的第四层协议. 在这一过程中, 4 层负载均衡会将网络数据包转发到上游服务器, 但不会检查数据包的内容, 只能通过检查 TCP 流中的前几个包来做出有限的路由决策.
7 层负载均衡不同于 4 层负载均衡, 它在高级应用层上执行, 会处理每个消息的实际内容. HTTP 是网络上网站流量的主要 7 层协议. 7 层负载均衡以比 4 层负载均衡更复杂的方式路由网络流量, 尤其适用于基于 TCP 的流量 (如 HTTP).7 层负载均衡会终止网络流量并读取器中消息, 它可以根据消息内容(如 URL 或 cookie) 做出负载均衡决策. 随后, 7 层负载均衡与选定上有服务器建立新的 TCP 连接并将请求写入服务器.
7 层负载均衡的好处
7 层负载均衡比基于数据包的 4 层负载均衡更占 CPU, 但很少会导致服务器性能下降. 7 层负载均衡可以让负载均衡器做出更明智的决策, 并可以对内容进行优化和更改, 如压缩, 加密等等. 7 层负载均衡还可以利用 buffering 来卸载上游服务器的慢速连接, 从而提高性能.
执行 7 层负载平衡的组件通常被称为反向代理服务器.
7 层负载均衡示例
举个简单的例子, 假设用户访问高流量网站, 在会话期间, 他或她可能会请求静态内容 (例如图像或视频), 动态内容(例如新闻订阅源) 或者交易信息 (例如订单状态) 等等. 7 层负载平衡允许负载均衡器根据请求本身中的消息 (如内容类型) 来路由请求. 也就是说, 我们可以将对图像或视频的请求路由到存储它的服务器, 并进行高度优化以提供多媒体内容; 可以将诸如折扣价之类的交易信息请求路由到负责管理定价的应用服务器. 借助 7 层负载平衡, 网络和应用程序架构师可以创建高度优化的服务器基础架构或应用交付网络, 在保障可靠性的同时进行有效扩展.
来源: http://www.tuicool.com/articles/QJreYvE