1. 轮询(Round Robin, rr)
- 原理 :依次将请求按顺序分配到后端服务器,循环往复。
- 特点 :简单公平,不考虑服务器性能差异。
- 适用场景 :服务器配置相同、无状态服务(如静态资源集群)。
2. 加权轮询(Weighted Round Robin, wrr)
- 原理 :根据服务器权重按比例分配请求,权重越高分配越多。
- 特点 :支持异构服务器集群,权重可动态调整。
- 适用场景 :服务器性能差异大的场景(如新旧混合部署)。
3. 目标地址哈希(Destination Hashing, dh)
- 原理 :根据请求的目标IP(VIP)计算哈希值,相同目标IP的请求分配到同一服务器。
- 特点 :确保同一目标IP的请求由同一服务器处理,提升缓存命中率。
- 适用场景 :缓存服务器集群(如Redis、Memcached)。
4. 源地址哈希(Source Hashing, sh)
- 原理 :根据客户端源IP计算哈希值,相同客户端的请求分配到同一服务器。
- 特点 :实现客户端会话保持,支持粘性会话。
- 适用场景 :需保持会话一致性的场景(如电商购物车)。
5. 最少连接(Least Connections, lc)
- 原理 :将请求分配到当前活跃连接数最少的服务器。
- 特点 :动态适应服务器负载,适合长连接场景。
- 适用场景 :数据库读写分离、动态内容服务(如PHP、Java)。
6. 加权最少连接(Weighted Least Connections, wlc)
- 原理 :在最少连接基础上引入权重,优先选择 (活跃连接数/权重) 最小的服务器。
- 特点 :结合动态负载和服务器性能差异。
- 适用场景 :异构服务器集群的动态负载均衡。
7. 最短预期延迟(Shortest Expected Delay, sed)
- 原理 :选择 (活跃连接数 + 1)/权重 最小的服务器,优化请求响应延迟。
- 特点 :减少新请求等待时间,适合高并发短连接。
- 适用场景 :API网关、实时数据处理服务。
8. 最少队列(Never Queue, nq)
- 原理 :若服务器有空闲(无活跃连接),直接分配请求;否则按最少连接分配。
- 特点 :减少请求排队,提升瞬时高并发处理能力。
- 适用场景 :突发流量场景(如秒杀、抢购活动)。
9. 基于局部性的最少连接(lblc)
- 原理 :根据客户端IP或目标IP划分局部性,在局部性内选择活跃连接数最少的服务器。
- 特点 :结合地理位置和负载状态,提升缓存命中率。
- 适用场景 :CDN、跨地域服务部署。
10. 复杂的基于局部性的最少连接(lblcr)
- 原理 :动态划分局部性(如网络延迟),局部性内选择最少连接服务器,支持跨局部性迁移。
- 特点 :动态容灾,支持服务节点复制。
- 适用场景 :混合云、高动态网络环境(如跨国服务)。