负载均衡算法最全详解(图文全面总结)

负载均衡是大型架构核心,下面我详解负载均衡算法@mikechen

1.轮循

负载均衡算法最全详解(图文全面总结)-mikechen

轮循,按固定顺序依次将每个新请求分配给后端服务器,循环往复。

优点是实现简单、开销低、适用于节点性能相近且请求耗时稳定的场景;

易于预测且公平分配基础请求量。

缺点是在服务器性能或请求处理时间差异较大时会造成负载不均,无法感知后端实时状态(除非结合健康检查);

对会话粘性要求高的应用需额外机制支持。

典型应用于静态内容分发、简单的HTTP负载均衡或内部服务调用。

 

2.加权轮循

负载均衡算法最全详解(图文全面总结)-mikechen
加权轮循在轮循基础上,为每个节点设置权重。

按权重比例分配请求,权重可反映服务器性能或容量。

优点是在异构环境中能更合理分配负载,提高资源利用率;

缺点需要合理配置权重,且难以自动适应节点运行时性能波动,权重调整不当可能引入不均衡。

适用于后端节点性能差异明确、可通过静态或基于监控调整权重的场景,如混合规格的Web集群或多级缓存层。

 

3.随机

负载均衡算法最全详解(图文全面总结)-mikechen
随机算法:为每个到达请求随机选择一个后端节点。

优点实现非常简单且在节点数量大时能近似均匀分布,避免某些顺序相关的模式,对客户端分布无偏。

缺点短时内可能出现波动和偶发集中,无法利用节点性能信息或当前连接数。

适合短连接、高并发且节点性能相近的场景,如DNS负载均衡或部分无状态微服务流量调度。

 

4.最少连接

最少连接算法,将请求分配给当前活动连接数最少的节点,以减小节点负载差异。

负载均衡算法最全详解(图文全面总结)-mikechen

优点能动态适应后端负载与请求处理时间差异,适合长连接或请求处理时间不均匀的场景,可显著提升响应稳定性。

缺点需要维护和查询实时连接计数,开销和实现复杂度高。

在突发流量和短连接场景下效果有限;

若未结合性能权重,可能把过多短耗资源的请求分配给弱节点。

典型用于数据库代理、长连接服务(如WebSocket)、以及需要根据运行时负载做动态调度的中间件。

mikechen睿哥

10年+一线大厂架构实战经验,操盘多个亿级大厂核心项目,就职于阿里、淘宝等一线大厂。

评论交流
    说说你的看法