负载均衡策略
Dubbo内置了四种负载均衡策略:
RandomLoadBalance:随机负载均衡,默认的策略
RoundRobinLoadBalance:轮询负载均衡
LeastActiveLoadBalance:最少活跃调用数
ConsistenHashLoadBalance:一致性哈希,相同参数的请求总是会落在同一个机器上。
1.随机负载均衡
随机主要是根据权重来抉择的,权重大的概率就会大一点。
如果所有的机器的权重是一样的,算法就简单了,机器中直接随机就好了。
如果机器的权重不一样,例如,a的权重10,b的权重20,c的权重30,那么总的权重的10+20+30=60,a的范围就是0-10,b的范围是10-30,c的范围是30-60,然后在0——60中生成一个随机数,数字落在哪个区间就选择哪个机器。
2.轮询负载均衡
存在一个问题,就是当某一台机器慢的情况下,但是还没挂,时间长了会累计请求。
3.最小活跃数
活跃数指的是接收一次请求活跃计数器+1,请求处理完成-1,在某一时刻,服务提供者当前的活跃数。也就是说还有多少个正在处理的请求。
最小活跃数,意思就是选择服务提供者空闲状态的机器。(能者多劳)。
如果活跃数相同,则会根据随机负载均衡策略选择一台机器。
4.一致性哈希
某个节点宕机,影响的是邻近的下一个节点。如果节点少,容易出现数据倾斜的问题。
配置方式
服务端:
服务级别
<dubbo:service interface="" loadbalance="roundrobin"/>
方法级别
<dubbo:service interface="">
<dubbo:method name="" loadbalance="roundrobin"/>
</dubbo:service>
客户端:
服务级别:
<dubbo:reference interface="" loadbalance="roundrobin"/>
方法级别:
<dubbo:reference interface="">
<dubbo:method name="" loadbalance="roundrobin"/>
</dubbo:reference>
来源:CSDN
作者:背着电脑旅行
链接:https://blog.csdn.net/qq_33628614/article/details/103425831