负载均衡机制
负载均衡是分布式系统高可用和高性能的基础。Envoy 内置多种负载均衡算法,适应不同业务场景,支持灵活的流量分配和弹性扩展。
主要负载均衡算法
算法 | 说明 | 适用场景 |
---|---|---|
ROUND_ROBIN | 轮询分配请求,默认算法 | 一般场景,实例性能均衡 |
LEAST_REQUEST | 优先分配给当前请求数最少的实例 | 实例负载不均、请求耗时差异大 |
RING_HASH | 一致性哈希,基于请求属性分配 | 会话保持、缓存、灰度流量 |
MAGLEV | 高性能一致性哈希,分布更均匀 | 大规模分布式缓存、会话保持 |
RANDOM | 随机分配请求 | 无状态服务、简单高效 |
ROUND_ROBIN(轮询)
默认算法,按顺序将请求分配到各实例,适合大多数场景。
lb_policy: ROUND_ROBIN
LEAST_REQUEST(最少请求)
优先选择当前活跃请求数最少的实例,适合请求耗时差异大、实例性能不均场景。
lb_policy: LEAST_REQUEST
least_request_lb_config:
choice_count: 2
RING_HASH(一致性哈希)
基于请求属性(如 header/cookie)做一致性哈希,适合会话保持、缓存等。
lb_policy: RING_HASH
ring_hash_lb_config:
minimum_ring_size: 1024
maximum_ring_size: 4096
MAGLEV
高性能一致性哈希,分布更均匀,适合大规模缓存、会话保持。
lb_policy: MAGLEV
maglev_lb_config:
table_size: 65537
RANDOM(随机)
随机选择实例,简单高效,适合无状态服务。
lb_policy: RANDOM
算法对比与选型建议
- 绝大多数场景推荐 ROUND_ROBIN,简单可靠。
- 实例性能差异大、请求耗时不均时优先 LEAST_REQUEST。
- 需会话保持、缓存一致性时选 RING_HASH 或 MAGLEV。
- RANDOM 适合极简无状态服务或测试环境。
- 配合健康检查、熔断、子集选择等机制,提升整体可用性。
工程实践建议
- 结合业务特性和流量模型选择合适算法,避免单一算法带来的瓶颈。
- 合理配置 ring/hash/maglev 等参数,确保分布均匀。
- 监控各实例流量分布和延迟,动态优化负载均衡策略。
- 负载均衡策略可与路由、子集选择等高级特性结合使用,实现更灵活的流量治理。
负载均衡是微服务系统弹性和扩展性的保障,建议结合实际业务持续优化。