面试题答案
一键面试常见负载均衡算法及原理
- 轮询(Round Robin)
- 原理:按顺序依次将请求分配到每个服务器上。假设服务器列表为
[A, B, C]
,第一个请求分配到A
,第二个到B
,第三个到C
,第四个又回到A
,如此循环。
- 原理:按顺序依次将请求分配到每个服务器上。假设服务器列表为
- 加权轮询(Weighted Round Robin)
- 原理:为每个服务器分配一个权重值,权重越高表示该服务器处理能力越强。算法按权重比例分配请求。例如服务器
A
权重为1
,B
权重为2
,C
权重为3
,则分配请求时,A
会接收1份请求,B
接收2份,C
接收3份,总体比例为1:2:3
。循环分配时,也是按此权重比例进行。
- 原理:为每个服务器分配一个权重值,权重越高表示该服务器处理能力越强。算法按权重比例分配请求。例如服务器
- 随机(Random)
- 原理:每次从服务器列表中随机选择一个服务器来处理请求。例如服务器列表为
[A, B, C]
,每次请求时,从这三个服务器中随机选一个来处理。
- 原理:每次从服务器列表中随机选择一个服务器来处理请求。例如服务器列表为
- 加权随机(Weighted Random)
- 原理:结合了随机和加权的思想。为每个服务器分配权重,权重越高,被随机选中的概率越大。例如服务器
A
权重为1
,B
权重为2
,C
权重为3
,在随机选择时,C
被选中的概率相对A
更大,比例与权重相关。
- 原理:结合了随机和加权的思想。为每个服务器分配权重,权重越高,被随机选中的概率越大。例如服务器
不同场景下负载均衡算法的选择
- 服务器性能相近场景
- 选择:轮询或随机算法。
- 原因:轮询可以均匀分配请求,简单易实现;随机算法也能大致均匀分配,且实现简单,在这种场景下能充分利用各服务器资源。
- 服务器性能差异较大场景
- 选择:加权轮询或加权随机算法。
- 原因:能根据服务器的处理能力分配请求,性能强的服务器承担更多请求,充分发挥各服务器优势,提高整体系统性能。
- 对请求处理顺序无严格要求,追求简单实现场景
- 选择:随机算法。
- 原因:实现简单,能快速分配请求,虽然不是严格均匀分配,但在大多数情况下能满足基本负载均衡需求。
- 对请求分配均匀性要求高场景
- 选择:轮询或加权轮询算法。
- 原因:轮询能严格按顺序均匀分配,加权轮询能按权重比例均匀分配,可保证请求分配的均匀性,避免某台服务器负载过高或过低。