反向代理和负载均衡的区别

Z, ZLW 531

反向代理和负载均衡的区别:反向代理是手段,负载均衡是目的。 反向代理可以实现负载均衡,同时负载均衡可以用其他方式来做。一般可以这样认为,如果一台服务器只是作为中介,将请求转发给另一台服务器,可以认为这台服务器是反向代理服务器。如果这台服务器是将请求按照某种规则分发到多台服务器,则认为这台服务器是负载均衡服务器。

1、反向代理

反向代理有点类似于设计模式的外观模式,这个设计模式可以隐藏系统的复杂性,提供统一的接口

类似的,反向代理只需要向客户端提供一个统一的地址。这样设计的好处是:

  • 提高安全性:统一的入口使得后端服务器的IP不会暴露在公网上,客户端只需要于代理服务器打交道。DDos攻击的处理、IP黑名单等交给反向代理负责,反向代理可以从源头限制后端服务器可以接收的连接数量
  • 提高扩展性和灵活性:统一的入口使得后端架构对客户端是不可见的,你可以替换服务器来维护集群的健康、根据访问量增删服务器来实现弹性负载均衡。没错,这里的功能与 LB 相辅相成。

既然是代理,请求的整个过程对反向代理都是可见的,因此反向代理可以实现:

  • 承担请求的解压缩:类似单一职责原则的设计,解压和压缩都由反向代理来实现。
  • SSL端点:扩展服务器时就不需要搭建 SSL 服务了。
  • 请求返回的缓存:对于不需要专用 CDN 的网站,反向代理也实现了请求加速的功能。

2、负载均衡

负载均衡器(Load Balance,下文简称 LB)像是一个请求调度中心,主要是为了分发请求,这一角色使得它可以:

  • 避免请求分配到不可用的服务器,比如发送心跳感知服务器在线情况
  • 避免服务器过载:例如实现一个简单的请求计数器或者统计请求的响应时间等
  • 解决单点问题:实现水平扩展
  • 根据请求类型分配指定的服务器:(比如静态文件分配给CDN,读写或者冷热分离等)

负载均衡器可以工作于两层, L4 TCP 层或者 L7 应用层。

L4 – 传输控制协议层:

工作于传输控制协议层意味着LB只获取TCP表头的基本信息:来源IP、目的IP等,请求体的内容对LB是透明的,也就是说LB看不到请求的内容,只知道它从何处来要往何处去,带了多重的“行李”

L4层的LB可以实现简单的轮询、随机、或者基于IP的地址位置请求分发

L7 — 应用层:

工作于应用层,例如最常用的 HTTP 协议层,则可以根据 HTTP 的方法、URL、版本、HTTP 头部信息甚至是根据请求体的内容,请求体都需要过 LB 这个安检机器,LB 知道“行李”装的是什么

当然,它的行程和重量,LB 也一清二楚(即实际上 LB 同时工作于 L4 和 L7 层)。

工作于 L7 层相比于 L4 层会更损耗性能,但在今天这个性能过剩的时代,这点损耗是可以接受的。

有了这个能力,LB 可以:

  • 根据请求方法,类型分配指定的服务器
  • 根据会话信息分配给保存响应会话的服务器,用户就可以不必重新登录
  • 充当SSL端点(Termination)LB 背后的服务器就不必每一个都去搭建相同的 SSL 环境了。

负载均衡器是为了分配请求,解决单点问题而生的,因此负载均衡器必须是两个或者以上才有意义。而反向代理一个服务器也可以

3、区别

反向代理是手段,负载均衡是目的。 也就是说,反向代理可以实现负载均衡,同时负载均衡可以用其他方式来做。

一般可以这样认为,如果一台服务器只是作为中介,将请求转发给另一台服务器,可以认为这台服务器是反向代理服务器。如果这台服务器是将请求按照某种规则分发到多台服务器,则认为这台服务器是负载均衡服务器。

回复

我来回复
  • 暂无回复内容

站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部