面试题答案
一键面试轮询算法
- 工作原理:按照顺序依次将请求分配到各个后端服务实例上,每个实例都会轮流处理请求,不考虑实例的性能差异。例如,有三个服务实例A、B、C,请求依次分配为A、B、C、A、B、C……
- 适用场景:适用于后端服务实例性能相近,对每个实例处理能力要求较为均衡的场景,能简单有效地实现流量分配。
加权轮询算法
- 工作原理:为每个后端服务实例分配一个权重值,权重值越高,被分配到请求的概率越大。按照权重比例依次分配请求。比如,实例A权重为2,实例B权重为1,实例C权重为1,那么请求分配顺序可能为A、A、B、C、A、A、B、C……
- 适用场景:当后端服务实例性能有差异时适用,性能强的实例权重高,能处理更多请求,充分利用不同实例的处理能力。
随机算法
- 工作原理:从所有后端服务实例中随机选择一个来处理请求,每次选择时每个实例被选中的概率相同。
- 适用场景:适用于后端服务实例性能相近,且对请求分配随机性有一定要求的场景,能在一定程度上分散流量。
加权随机算法
- 工作原理:和加权轮询类似,为每个后端服务实例分配权重,但不是按顺序分配,而是根据权重以随机方式选择实例。权重越高的实例被随机选中处理请求的概率越大。
- 适用场景:同样适用于后端实例性能不同的场景,且希望以随机方式分配请求,避免某些实例一直按顺序接收请求带来的压力不均。
最少连接算法
- 工作原理:优先将请求分配给当前连接数最少的后端服务实例。通过监控每个实例当前处理的连接数,选择连接数最少的实例来处理新请求。
- 适用场景:适用于长连接业务场景,能保证每个实例的负载相对均衡,避免某个实例因连接过多而性能下降。