在集群负载均衡时,Dubbo提供了多重均衡策略,缺省为random随机调用。
当然可以根据自己的业务需求自行扩展一些策略。
1、Romdom loadBalance
1)随机。按权重设计随机概率。
2)在一个截面上碰撞的概率高,但调用越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者的权重。
2、RoundRobin loadBalance
1)轮循,按公约后的权重设置轮循比例。
2)存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,久而久之,所有的请求都卡在调到第二台上。
3、LeastActive LoadBalance
1)最少活跃调用数,相同活跃数的随机,活跃数指调用前后的计数差。
2)使慢的提供者受到更少的请求,因为越慢的提供者的调用前后的计数差会越大。
4、ConsistentHash LoadBalance
1)一致性Hash,相同的请求参数总是发到同一提供者。
2)当一台提供者挂时,原本发往 该提供者的请求,基于虚拟节点,平摊到其他提供者,不会引起剧烈的变动。
3)算法参见: http://en.wikipedia.org/wiki/Consistent_hashing
4)缺省只对第一个参数Hash,如果要修改,请配置<dubbo:parameter key="hash.arguments" value="0,1" />这样就配置两个参数了
5)缺省用160份虚拟节点,如果要修改,请配置<dubbo:parameter key="hash.nodes" value="320" /> 这样就配置了节点320个虚拟节点