[System Design] Load Balancer 和 Reverse Proxy

Load Balancer

前言

一致性哈希和load balancer系统设计中有一定关连,系统设计中可以一起提。一致性哈希在另外一篇文章中写,本文不提。

Load balancer可以把请求分配到合适的worker上去处理。 Load balancer 并不是路由到某个具体的api,所以概览上load balancer 和api gateway是不一样的。LB和reverse proxy概念上也是不一样的。

Load Balancer

Typically a load balancer sits between the client and the server accepting incoming network and application traffic and distributing the traffic across multiple backend servers using various algorithms.
A load balancer reduces individual server load and prevents any one application server from becoming a single point of failure.
在这里插入图片描述

Load Balancer的优点

  • Preventing requests from going to unhealthy servers 防止请求指向不健康的服务器
  • Preventing overloading resources 防止某个资源过载,这里的资源可以是CPU,内存等
  • Helping to eliminate a single point of failure 帮助消除单点失败

LB的实现

  • 可以是物理方式:硬件
  • 可以是软件:Nginx, HAProxy等
  • AWS有Elastic Load Balancing ELB

LB的额外优点

  • SSL termination
    负责加密解密https请求,后端的server不需要做这些操作
  • Session persistence
    发布cookie并路由某一个客户的请求一直到同一台server,因为我们的某一台woker的session

LB Single Point Failure

为了预防LB的单点失败,我们经常需要配置多台LB 通过 active-passive 或者active-active模式

Active-passive

一台lb是active的,其他passive。通过heatbeats 心跳来检测LBs是否可请求,如果active的LB的heatbeat不正常,就用Passive的lb接管active的ip地址并继续服务。
在这里插入图片描述

Active-active

所有的LBs都处理请求。 如果LB是直接面向外部的,DNS要知道所有的LB的地址。 如果LB是在内部的,内部应用的逻辑要知道所有的LB。

Load Balancer 可以帮助scaling

Load balancer可以帮助horizontal scaling通过添加过多的server或者resources。
对应的另外一种scaling是Vertical scaling,通过对这台server添加更多或者更贵的硬件。

Load Balancer的缺点

  • 如果lb自己没有足够的资源,那么它可能成为系统的瓶颈
  • 引用lb来解决Single point of Failure会让整个系统的复杂性提升
  • 一个单一的LB也将可能是一个single point of failure,多个LB的话会导致更大的复杂性

Reverse Proxy 反向代理

在这里插入图片描述
反向代理是一个web server,统一了外部请求的接口,进入到反向代理后,会通过判断请求,指向到对应能处理请求的地址。比如一个request,proxy判断出它是请求图片资源,直接指向对应的图片地址,不走到对应的service进去处理。

优点:

  • 增加安全性。 隐藏了后部的服务器地址,也可以添加黑名单ip地址,限制clinet的连接数等
  • 增加自由性,和可扩展性。客户只能看到proxy IP, 意味着你可以随时增加更多proxy后部的services或者servers。
  • SSL termination: 可以负责加密解密https
  • 压缩: 可以负责压缩response
  • 缓存: 可以缓存response下次直接返回
  • 静态内容: 直接指向静态内容,不走其他service的路由

LB VS Reverse Proxy

  • 有多台功能一直的服务器的话是要用LB
  • 如果只有一个web server或者application server, 应该使用Reverse Proxy可以带来上述优点
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值