负载均衡:当有多个提供者的时候,如何选择 哪个提供者进行调用的负载算法。
在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 random
随机调用。
Dubbo 官方支持以下负载均衡策略:
1.随机( random):按权重设置随机概率。此为默认算法
参考代码:com.alibaba.dubbo.rpc.cluster.loadbalance.RandomLoadBalance
2.轮询(roundrobin):按公约后的权重设置轮询比率
参考代码:com.alibaba.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance
3.最少活跃调用数 (leastactive):相同活跃数的随机,活跃数指调用前后计数差
参考代码:com.alibaba.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance
4.一致性hash(consistenthash):相同的参数总是发到同一机器
参考代码:com.alibaba.dubbo.rpc.cluster.loadbalance.ConsistentHashLoadBalance
一致性hash主要应用于分布式缓存中,可以有效解决分布式存储结构下动态增加和删除节点锁带来的问题。
详细请 参考:https://mp.weixin.qq.com/s/yimfkNYF_tIJJqUIzV7TFA
<dubbo:reference interface="..." loadbalance="roundrobin" >
<dubbo:paramter key="hash.arguments" value="0"/>
<dubbo:paramter key="hash.nodes" value="320"/>//默认为160
</dubbo:reference>
配置:
服务端服务级别:
<dubbo:service interface="..." loadbalance="roundrobin" />
客户端服务级别:
<dubbo:reference interface="..." loadbalance="roundrobin" />
服务端方法级别:
<dubbo:service interface="...">
<dubbo:method name="..." loadbalance="roundrobin"/>
</dubbo:service>
客户端方法级别:
<dubbo:reference interface="...">
<dubbo:method name="..." loadbalance="roundrobin"/>
</dubbo:reference>
优先级:服务端服务级别 > 客户端服务级别 > 服务端方法级别 > 客户端方法级别:
负载均衡是针对于客户端来来讲的,服务端 配置也是给客户端配置的。
来源:CSDN
作者:IT_搬运工
链接:https://blog.csdn.net/fd2025/article/details/80050915