本文主要是介绍dubbo3 负载均衡器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
dubbo3的负载均衡实现类目前共有5种,如下:
负载均衡器 | Extension Name | 逻辑 | 例子| |
---|---|---|---|
RandomLoadBalance | random | 根据provider 节点的权重(默认100)随机选择,存在误差 | 从provider url获取权重的示例:url.getParameter(“weight”, 100) |
RoundRobinLoadBalance | roundrobin | 根据provider节点的权重,以加权平均的方式进行负载均衡,能够严格保证按权重大小进行负载。 | A和B两个provider 节点的权重分别是8和2,该负载均衡器能够保证每10次中,A被分到8次,B被分到2次 |
LeastActiveLoadBalance | leastactive | 每次选择最小活跃并发的节点,如果存在活跃数和权重一样的节点,就随机从这些节点中选择一个。目的是使慢的provider处理更少的请求 | |
ConsistentHashLoadBalance | consistenthash | 基于一致性hash算法实现的负载均衡器,当一个provider节点下线后,会平摊到其它provider节点,不会造成某一个节点压力过大。 从provider url获取算法参考: hash.nodes = 虚拟节点数,默认 160 hash.arguments = 用于生成hash key的参数下标,可多个,用逗号分隔 | hash.nodes=“160” hash.arguments=“0,1” |
SortestResponseLoadBalance | shortestresponse | 每次选择预计耗时最少的节点,如果存在预计耗时和权重一样的节点,就随机从这些节点中选择一个。目的是使慢的provider处理更少的请求 |
其中默认的负载均衡器就是RandomLoadBalance,也可以在consumer url中通过"loadbalance"参数指定。
这篇关于dubbo3 负载均衡器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!