# 4.6 Nginx服务器的负载均衡

Nginx服务器反向代理服务的一个重要用途是实现<mark style="color:blue;">**负载均衡**</mark>。

网络负载均衡技术的大致原理是利用一定的分配策略将网络负载平衡地分摊到网络集群的各个操作单元上，使得单个重负载任务能够分担到多个单元上并行处理，或者使得大量并发访问或数据流量分担到多个单元上分别处理，从而减少用户的等待响应时间。

在实际应用中，负载均衡会根据网络的不同层次（一般按照OSI的七层参考模型）进行划分。现代的负载均衡技术主要实现和作用于网络的第四层（传输层）或第七层（应用层），完全独立于网络基础硬件设备，成为单独的技术设备。Nginx服务器实现的负载均衡一般认为是七层负载均衡。

负载均衡主要<mark style="color:blue;">**通过专门的硬件设备实现**</mark>或者<mark style="color:blue;">**通过软件算法实现**</mark>。

* 通过硬件设备实现的负载均衡效果好、效率高、性能稳定，但是成本比较高。
* 通过软件实现的负载均衡主要依赖于均衡算法的选择和程序的健壮性。

<mark style="color:blue;">**均衡算法**</mark>也是多种多样的，常见的有两大类：即<mark style="color:blue;">**静态负载均衡算法**</mark>和<mark style="color:blue;">**动态负载均衡算法**</mark>。

* 静态算法实现比较简单，在一般网络环境下也能达到比较好的效果，主要有<mark style="color:blue;">**一般轮询算法**</mark>、<mark style="color:blue;">**基于比率的加权轮询算法**</mark>以及<mark style="color:blue;">**基于优先级的加权轮询算法**</mark>等。
* 动态负载均衡算法在较为复杂的网络环境中适应性更强，效果更好，主要有<mark style="color:blue;">**基于任务量的最少连接优先算法**</mark>、<mark style="color:blue;">**基于性能的最快响应优先算法**</mark>、<mark style="color:blue;">**预测算法**</mark>及<mark style="color:blue;">**动态性能分配算法**</mark>等。
