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

轮循,按固定顺序依次将每个新请求分配给后端服务器,循环往复。
优点是实现简单、开销低、适用于节点性能相近且请求耗时稳定的场景;
易于预测且公平分配基础请求量。
缺点是在服务器性能或请求处理时间差异较大时会造成负载不均,无法感知后端实时状态(除非结合健康检查);
对会话粘性要求高的应用需额外机制支持。
典型应用于静态内容分发、简单的HTTP负载均衡或内部服务调用。
2.加权轮循

加权轮循在轮循基础上,为每个节点设置权重。
按权重比例分配请求,权重可反映服务器性能或容量。
优点是在异构环境中能更合理分配负载,提高资源利用率;
缺点需要合理配置权重,且难以自动适应节点运行时性能波动,权重调整不当可能引入不均衡。
适用于后端节点性能差异明确、可通过静态或基于监控调整权重的场景,如混合规格的Web集群或多级缓存层。
3.随机

随机算法:为每个到达请求随机选择一个后端节点。
优点实现非常简单且在节点数量大时能近似均匀分布,避免某些顺序相关的模式,对客户端分布无偏。
缺点短时内可能出现波动和偶发集中,无法利用节点性能信息或当前连接数。
适合短连接、高并发且节点性能相近的场景,如DNS负载均衡或部分无状态微服务流量调度。
4.最少连接
最少连接算法,将请求分配给当前活动连接数最少的节点,以减小节点负载差异。

优点能动态适应后端负载与请求处理时间差异,适合长连接或请求处理时间不均匀的场景,可显著提升响应稳定性。
缺点需要维护和查询实时连接计数,开销和实现复杂度高。
在突发流量和短连接场景下效果有限;
若未结合性能权重,可能把过多短耗资源的请求分配给弱节点。
典型用于数据库代理、长连接服务(如WebSocket)、以及需要根据运行时负载做动态调度的中间件。
mikechen睿哥
10年+一线大厂架构实战经验,操盘多个亿级大厂核心项目,就职于阿里、淘宝等一线大厂。