2022-05-01 10:53:09
Nginx 负载均衡通过分发请求到多台服务器提升系统性能,反向代理则作为中间层转发客户端请求并隐藏后端服务器细节,二者结合可构建高可用、高性能的分布式系统。 以下是具体讲解:
一、负载均衡负载均衡指将外部请求均匀分配到多台服务器,以解决高并发访问问题。Nginx 支持多种负载均衡策略,适用于不同场景。
1. 负载均衡分类优点:
实现简单,无需额外维护负载均衡服务器。
支持基于地理位置的解析,可就近分配服务器,提升访问速度。
缺点:
DNS 缓存可能导致修改生效延迟,影响可用性。
无法动态感知服务器状态,扩展性差。
无法根据服务器性能差异分配请求。

实现方式:
源地址转换(SNAT):修改数据包源地址为负载均衡服务器 IP。
网关模式:负载均衡服务器作为真实服务器集群的网关。
优点:
在内核层完成分发,性能优于应用层负载均衡。
缺点:
所有响应需经过负载均衡服务器,吞吐量受限于其网卡带宽。
优点:性能高,响应无需经过负载均衡服务器。
缺点:配置复杂,需支持 ARP 协议修改。
动静分离场景:反向代理服务器缓存静态资源,动态请求转发至应用服务器集群。
动态请求场景:多级负载均衡,先按业务类型分发,再按性能分配。
轮询按顺序依次分配请求,适合服务器性能相同的场景。
优点:请求分布均匀。
缺点:无法处理服务器性能差异。
随机随机分配请求,实现简单但无法保证公平性。
优点:配置简单。
缺点:不适合异构服务器环境。
最少链接优先分配给当前连接数最少的服务器,动态适应负载变化。
优点:避免过载,适合长连接场景。
缺点:需维护连接数状态,实现复杂。
源地址散列(Hash)根据客户端 IP 计算哈希值,固定分配到同一服务器,实现会话粘滞。
优点:保证同一客户端请求由同一服务器处理。
缺点:服务器宕机时会话丢失。
加权在基础算法上引入权重参数,按性能分配请求比例。
优点:灵活适配异构服务器。
缺点:需手动配置权重,维护成本高。
反向代理指代理服务器接收客户端请求,转发至内部服务器,并将结果返回客户端。此时代理服务器对外表现为真实服务器,隐藏后端架构。
1. 核心功能