负载均衡机制

负载均衡是分布式系统高可用和高性能的基础。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 等参数,确保分布均匀。
  • 监控各实例流量分布和延迟,动态优化负载均衡策略。
  • 负载均衡策略可与路由、子集选择等高级特性结合使用,实现更灵活的流量治理。

负载均衡是微服务系统弹性和扩展性的保障,建议结合实际业务持续优化。

文章导航

章节完成

恭喜完成本章节!下一章节即将开始。下一章节:监听器

章节概览