专业的编程技术博客社区

网站首页 > 博客文章 正文

Dubbo负载均衡策略详解(图文全面总结)

baijin 2025-07-23 12:53:04 博客文章 4 ℃ 0 评论

关注mikechen十余年BAT架构经验倾囊相授!

大家好,我是mikechen睿哥。


Dubbo是一款高性能的 RPC框架,也是大厂经常使用中间件,下面我详解Dubbo负载均衡策略@mikechen

Dubbo

Dubbo 作为一套成熟的分布式 RPC 框架,支持多种负载均衡策略,以实现服务调用的高效、均衡、可扩展。

默认状态下,Dubbo 使用的是 RandomLoadBalance(随机调用),它是一种体系效率高而应用场景广的策略。


Dubbo负载均衡策略

Dubbo 的负载均衡,是在服务消费者 (Consumer) 端实现的。

首先,Consumer 从注册中心(如 ZooKeeper),获取 Provider 列表。

然后,根据配置的负载均衡策略,从列表中选择一个 Invoker。

最后,执行远程调用,如下图所示:

客户端 -> Dubbo Consumer (LoadBalance) -> 多个 Dubbo Provider。

消费者从注册中心获取提供者列表后,根据配置的负载均衡策略,在本地选择一个 Invoker (服务提供者抽象) 进行远程调用。

Dubbo 负载均衡策略,如下:

策略名称

类名

原理概述

随机

RandomLoadBalance

按权重随机分配,默认策略

轮询

RoundRobinLoadBalance

顺序调用各服务节点,可加权重

最少活跃调用

LeastActiveLoadBalance

选择当前调用最少的节点

一致性响应

ConsistentHashLoadBalance

保证同一参数给同一节点,保持会话


RandomLoadBalance (默认)

原理

按照各节点的权重分配随机值,权重越大,被选中概率越高。

适用场景

  • 节点性能相仿,需要均衡调用;
  • 调用量大,希望随机分散;
  • 允许一定程度上的“不稳定”;


RoundRobinLoadBalance

按照服务节点顺序轮询调用,如下图所示:

支持权重配置,实现有一个维持的调用记录;

适用

  • 对调用顺序有需求(如按照 ID 轮询分发级联调用);
  • 稳定性要求高;


LeastActiveLoadBalance

选择当前处于“最少活跃调用”的 Provider;

如果多个节点活跃数相同,再按权重随机;

适用

  • 调用耗时不均衡,需要动态同步节点压力
  • 对响应时间效果敏感场景


ConsistentHashLoadBalance

依据调用参数使用一致性响应算法;

保证同一参数给同一节点;

合适会话系统、分布式缓存(sessionId, userId);

适用

  • 需要保持调用结果稳定性
  • 分布式系统中需要“查询结果给同一节点”效果


总结

策略

适用场景

Random

默认,性能均衡节点

RoundRobin

顺序分配,需要轮询

LeastActive

有性能差异或需效率优先

ConsistentHash

分布式缓存、会话系统

以上

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表