什么是负载均衡
负载均衡是一种将用户请求合理地分发到多台后端服务器技术
目的是提高系统的并发能力、可用性与容错性,从而实现高可用和高性能
负载均衡分类
负载均衡可分为三种层次
层次 | 名称 | 例子 | 说明 |
---|---|---|---|
L4 | 传输层负载均衡 | LVS、Nginx | 基于TCP/UDP层 |
L7 | 应用层负载均衡 | Nginx、Gateway | 基于HTTP/HTTPS,支持路径、头部等规则 |
客户端 | 客户端负载均衡 | Ribbon、Feign | 客户端自行选择服务器地址发起请求 |
常见的负载均衡算法
轮询(Round Robin)
- 每个请求按照顺序依次分配到不同的服务器
- 简单、均衡
随机(Random)
- 随机选一个服务器处理请求
- 简单、高效,可能导致分配不均匀
加权轮询(Weighted Round Robin)
- 给服务器设置权重,高性能的服务器分配更多请求
- 适合服务器性能差以较大的场景
加权随机(Weighted Random)
- 权重控制随机概率,高权重服务器被选中概率高
最少连接数(Least Connections)
- 动态分发:每次选择当前连接数最少的服务器
- 适用于长连接场景(如WebSocket)
一致性哈希(Consistent Hash)
- 请求通过哈希后定位到固定服务器节点
- 适用于需要请求粘性或会话保持的场景
负载均衡算法对比
算法 | 是否支持权重 | 是否考虑服务器状态 | 是否支持粘性 | 特点 |
---|---|---|---|---|
轮询 | ❌ | ❌ | ❌ | 均衡、简单 |
随机 | ❌ | ❌ | ❌ | 快速、无序 |
加权轮询 | ✔ | ❌ | ❌ | 支持服务器性能差异 |
加权随机 | ✔ | ❌ | ❌ | 简单、负载控制 |
最少连接 | ❌ | ✔ | ❌ | 动态调整、适合长连接 |
一致性哈希 | ❌ | ❌ | ✔ | 请求定向 |
总结
- 负载均衡是高可用架构的核心基础设施
- 选择合适的算法要结合业务
- 一致性哈希适合请求绑定场景
- 加权策略适合后端机器能力不均匀场景