Skip to content

P80 Dubbo 负载均衡策略是什么?不同场景该用哪一种? ​

面试题:Dubbo 有哪几种负载均衡策略?各自适用什么场景?

1. Dubbo 四种负载均衡策略 ​

① Random(随机,默认) ​

text
按权重随机选择一台提供者
  • 默认策略;权重可配;
  • 适用:绝大多数场景,权重均分时效果接近轮询,简单平滑。

② RoundRobin(轮询) ​

text
按顺序轮流调用,支持加权
  • 新版本是平滑加权轮询,避免突刺;
  • 适用:请求处理时间相对均匀的场景。

③ LeastActive(最少活跃调用数) ​

text
选当前活跃调用数最少的节点(正在处理的请求最少的)
  • 动态感知节点负载,慢节点自然少接活;
  • 适用:各节点性能差异大、处理耗时不均匀的场景。

④ ConsistentHash(一致性哈希) ​

text
相同参数的请求永远路由到同一台节点
  • 适用:有状态服务(本地缓存、Session),相同用户/相同 key 固定打在同一节点;
  • 节点变化时只影响小部分 key(虚拟节点均匀分布)。

2. 怎么选 ​

场景策略
默认无特殊要求Random
节点性能差异大、耗时不均LeastActive
有本地缓存/状态,要求同一 key 同节点ConsistentHash
请求耗时均匀、想严格均摊RoundRobin

3. 加分点 ​

  • 权重本质是"按权重扩大被选中概率",随机/轮询都支持;
  • 提到 Dubbo 的负载均衡是调用端(Consumer)本地做的,不经过中心;
  • 追问"和 Nginx 负载均衡区别":Nginx 是网关层集中分发,Dubbo 是客户端侧选择,基于注册中心的服务列表;
  • 补充:集群容错(failover/failfast)与负载均衡是两个维度,别混。

一句话总结 ​

Dubbo 默认 Random 随机(带权重),另有 RoundRobin 轮询、LeastActive 最少活跃(节点性能不均时用)、ConsistentHash 一致性哈希(有状态场景);按业务选择,通常默认 Random 就够。

基于 VitePress 重建