You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
source-code-hunter/docs/Dubbo/cluster/负载均衡.md

1.7 KiB

Dubbo 负载均衡简介

负载均衡,无论在常用的中间件 及 框架中,还是现实生活中,都有所体现。比如,一个团队干活,老大肯定要尽可能把任务均匀合理地分下去,让整个团队能高速运转,能力强的多分点,能力弱的少分点,绝对不能去逮着一个人 让他累到死,让其它人闲着。这样的均匀分配任务及压力的思想 放在开发领域 即是“负载均衡”。它就相当于是一个压力均衡机制,通过各种策略,为集群中的每台服务器合理地分配压力,这样 即能提升整个集群的运行效率,又能尽量避免 某个节点因为压力过大而宕机。

在 Dubbo 中也需要负载均衡机制,将消费者的请求 合理分配到服务提供者集群的各个节点上,以提升集群的整体运行效率 和 避免单个节点压力过大而宕机的问题。Dubbo 提供了4种负载均衡实现缺省为 RandomLoadBalance 加权随机调用,如下。

  • RandomLoadBalance加权随机算法按权重设置随机概率
  • RoundRobinLoadBalance加权轮询算法按公约后的权重设置轮询比率
  • LeastActiveLoadBalance最少响应时间算法使快速响应的服务提供者 接收更多请求,慢的提供者收到更少请求;
  • ConsistentHashLoadBalance一致性hash算法相同参数的请求总是发到同一提供者。

源码赏析

LoadBalance接口 和 AbstractLoadBalance

AbstractLoadBalance 实现了 LoadBalance接口是负载均衡的抽象类提供了权重计算的功能。


RandomLoadBalance


RoundRobinLoadBalance


LeastActiveLoadBalance


ConsistentHashLoadBalance