Nginx是大型架构核心,下面我详解Nginx负载均衡原理@mikechen
第一,轮询(Round Robin) 是最基础的算法。
Nginx 会按顺序将请求依次分发给每台后端服务器,循环往复。

请求1 → 服务器A 请求2 → 服务器B 请求3 → 服务器C 请求4 → 服务器A ...
它的优点是实现简单、分配均匀、易于理解,适合后端服务器性能接近、请求处理时间较为稳定的场景。
缺点也很明显:它不关心每台机器的真实负载情况,如果某些请求耗时更长,或者后端服务器性能差异较大,就可能出现负载不均。
第二,加权轮询(Weighted Round Robin) 是轮询的增强版。
管理员可以根据后端服务器的性能配置不同权重,Nginx 会按照权重比例分配请求。

例如,一台性能更强的服务器可以设置更高权重,从而承接更多流量。
A(权重3) B(权重1) 调度序列: A A A B A A A B ...
该算法的优势在于能够适配异构集群,让硬件资源更合理地被利用。
它的不足在于,权重是静态配置的,无法实时反映服务器瞬时压力,因此在业务波动较大时,仍可能出现局部拥塞。
第三,IP Hash 是根据客户端 IP 地址进行哈希计算,然后将相同 IP 的请求固定转发到同一台后端服务器。
它最大的特点是“会话粘性”较强,适合需要保持用户会话状态的场景,例如未使用共享 session 或分布式会话存储的系统。

IP1 → hash → Server A IP2 → hash → Server B
这样可以避免用户在多次请求中频繁切换后端导致登录态丢失。
其局限性也很突出:一旦某台后端宕机,部分用户映射关系会发生变化;
另外,当大量用户来自同一出口 IP(如公司内网、运营商 NAT)时,可能造成流量倾斜。
第四,最少连接(Least Connections) 会优先将请求分发给当前连接数最少的后端服务器。

A(10连接) B(3连接) 新请求 → B
相比轮询,它更能反映后端的实时处理压力,尤其适合请求耗时差异较大、长连接较多的业务。
如文件下载、实时通信或接口响应时间波动明显的系统。
它的优势是更贴近“动态负载均衡”的思想,能减少某一台机器被瞬时压垮的风险。
但由于需要维护连接数状态,算法复杂度比轮询略高;
同时,如果连接数与真实 CPU、内存压力并不完全一致,也可能出现判断偏差。