From 83e70c605193cc55cc2143188e1a81783d9a245c Mon Sep 17 00:00:00 2001 From: AmyliaY <471816751@qq.com> Date: Wed, 6 May 2020 23:25:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=9F=E8=BD=BD=E5=9D=87=E8=A1=A1=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=EF=BC=8C=E6=BA=90=E7=A0=81=E8=B5=8F=E6=9E=90(?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E5=BE=85=E5=AE=8C=E5=96=84)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/Dubbo/cluster/负载均衡.md | 43 +++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/docs/Dubbo/cluster/负载均衡.md b/docs/Dubbo/cluster/负载均衡.md index fcb5dbe..1299edb 100644 --- a/docs/Dubbo/cluster/负载均衡.md +++ b/docs/Dubbo/cluster/负载均衡.md @@ -1 +1,42 @@ -努力编写中... \ No newline at end of file +## Dubbo 负载均衡简介 +负载均衡,无论在常用的中间件 及 框架中,还是现实生活中,都有所体现。比如,一个团队干活,老大肯定要尽可能把任务均匀合理地分下去,让整个团队能高速运转,能力强的多分点,能力弱的少分点,绝对不能去逮着一个人 让他累到死,让其它人闲着。这样的均匀分配任务及压力的思想 放在开发领域 即是“负载均衡”。它就相当于是一个压力均衡机制,通过各种策略,为集群中的每台服务器合理地分配压力,这样 即能提升整个集群的运行效率,又能尽量避免 某个节点因为压力过大而宕机。 + +在 Dubbo 中也需要负载均衡机制,将消费者的请求 合理分配到服务提供者集群的各个节点上,以提升集群的整体运行效率 和 避免单个节点压力过大而宕机的问题。Dubbo 提供了4种负载均衡实现,缺省为 RandomLoadBalance 加权随机调用,如下。 +- RandomLoadBalance:加权随机算法,按权重设置随机概率; +- RoundRobinLoadBalance:加权轮询算法,按公约后的权重设置轮询比率; +- LeastActiveLoadBalance:最少响应时间算法,使快速响应的服务提供者 接收更多请求,慢的提供者收到更少请求; +- ConsistentHashLoadBalance:一致性hash算法,相同参数的请求总是发到同一提供者。 + +## 源码赏析 +### LoadBalance接口 和 AbstractLoadBalance +AbstractLoadBalance 实现了 LoadBalance接口,是负载均衡的抽象类,提供了权重计算的功能。 +```java + +``` + +### RandomLoadBalance +```java + +``` + + + +### RoundRobinLoadBalance +```java + +``` + + + +### LeastActiveLoadBalance +```java + +``` + + + +### ConsistentHashLoadBalance +```java + +``` +