[load balancer] 为什么不会成为系统瓶颈?

课程中几乎每个系统架构图都会用到load balancer。
作为所有web traffic的入口和出口,load balancer是如何避免成为系统的瓶颈的呢?

当客户端发起请求的时候,这个请求会首先到达load balancer,在此之后backen service(like upload service) 会处理请求, 最终产生response并把response发给load balancer再由load balancer把request发还给client。

  1. 这样的话load balancer需要处理系统中每一个进入和离开的request,难道不会成为系统瓶颈吗?
  2. 为什么backend service不能直接根据http data packet中的src把 response直接绕过 load balance发给client呢? 这样load balancer就只需要处理进入系统的流量了,不需要再relay response,更不容易成为系统的瓶颈。

所以生产环境中的load balancer具体是怎么处理每个request的呢?

  1. Load balancer 是一个 stateless service。我们会使用多台机器,所以不会成为 single point of failure,同时也因为逻辑简单,不会成为瓶颈,因为每台机器处理的 QPS 可以很高。如果没有 load balancer,我们就没办法合理利用每台后端机器的资源。

  2. 每一次 request 都会经过 load balance。处理同一个用户的多次 request 可能使用不同的机器,没法绕过 load balancer。