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.
1.7 KiB
1.7 KiB
Dubbo 负载均衡简介
负载均衡,无论在常用的中间件 及 框架中,还是现实生活中,都有所体现。比如,一个团队干活,老大肯定要尽可能把任务均匀合理地分下去,让整个团队能高速运转,能力强的多分点,能力弱的少分点,绝对不能去逮着一个人 让他累到死,让其它人闲着。这样的均匀分配任务及压力的思想 放在开发领域 即是“负载均衡”。它就相当于是一个压力均衡机制,通过各种策略,为集群中的每台服务器合理地分配压力,这样 即能提升整个集群的运行效率,又能尽量避免 某个节点因为压力过大而宕机。
在 Dubbo 中也需要负载均衡机制,将消费者的请求 合理分配到服务提供者集群的各个节点上,以提升集群的整体运行效率 和 避免单个节点压力过大而宕机的问题。Dubbo 提供了4种负载均衡实现,缺省为 RandomLoadBalance 加权随机调用,如下。
- RandomLoadBalance:加权随机算法,按权重设置随机概率;
- RoundRobinLoadBalance:加权轮询算法,按公约后的权重设置轮询比率;
- LeastActiveLoadBalance:最少响应时间算法,使快速响应的服务提供者 接收更多请求,慢的提供者收到更少请求;
- ConsistentHashLoadBalance:一致性hash算法,相同参数的请求总是发到同一提供者。
源码赏析
LoadBalance接口 和 AbstractLoadBalance
AbstractLoadBalance 实现了 LoadBalance接口,是负载均衡的抽象类,提供了权重计算的功能。
RandomLoadBalance
RoundRobinLoadBalance
LeastActiveLoadBalance
ConsistentHashLoadBalance