Nginx负载均衡原理详解:4 种主流调度算法对比

Nginx是大型架构核心,下面我详解Nginx负载均衡原理@mikechen

第一,轮询(Round Robin) 是最基础的算法。

Nginx 会按顺序将请求依次分发给每台后端服务器,循环往复。

Nginx负载均衡原理详解:4 种主流调度算法对比-mikechen

请求1 → 服务器A
请求2 → 服务器B
请求3 → 服务器C
请求4 → 服务器A
...

它的优点是实现简单、分配均匀、易于理解,适合后端服务器性能接近、请求处理时间较为稳定的场景。

缺点也很明显:它不关心每台机器的真实负载情况,如果某些请求耗时更长,或者后端服务器性能差异较大,就可能出现负载不均。

 

第二,加权轮询(Weighted Round Robin) 是轮询的增强版。

管理员可以根据后端服务器的性能配置不同权重,Nginx 会按照权重比例分配请求。

Nginx负载均衡原理详解:4 种主流调度算法对比-mikechen

例如,一台性能更强的服务器可以设置更高权重,从而承接更多流量。

A(权重3) B(权重1)

调度序列:
A A A B A A A B ...

该算法的优势在于能够适配异构集群,让硬件资源更合理地被利用。

它的不足在于,权重是静态配置的,无法实时反映服务器瞬时压力,因此在业务波动较大时,仍可能出现局部拥塞。

 

第三,IP Hash 是根据客户端 IP 地址进行哈希计算,然后将相同 IP 的请求固定转发到同一台后端服务器。

它最大的特点是“会话粘性”较强,适合需要保持用户会话状态的场景,例如未使用共享 session 或分布式会话存储的系统。

Nginx负载均衡原理详解:4 种主流调度算法对比-mikechen

IP1 → hash → Server A
IP2 → hash → Server B

这样可以避免用户在多次请求中频繁切换后端导致登录态丢失。

其局限性也很突出:一旦某台后端宕机,部分用户映射关系会发生变化;

另外,当大量用户来自同一出口 IP(如公司内网、运营商 NAT)时,可能造成流量倾斜。

 

第四,最少连接(Least Connections) 会优先将请求分发给当前连接数最少的后端服务器。

Nginx负载均衡原理详解:4 种主流调度算法对比-mikechen

A(10连接) B(3连接)

新请求 → B

相比轮询,它更能反映后端的实时处理压力,尤其适合请求耗时差异较大、长连接较多的业务。

如文件下载、实时通信或接口响应时间波动明显的系统。

它的优势是更贴近“动态负载均衡”的思想,能减少某一台机器被瞬时压垮的风险。

但由于需要维护连接数状态,算法复杂度比轮询略高;

同时,如果连接数与真实 CPU、内存压力并不完全一致,也可能出现判断偏差。

评论交流
    说说你的看法