dubbo入门(3)——负载均衡

一.四种负载均衡策略

    dubbo源码提供了四种负载均衡的策略,默认为random随机调用。

    1.RandomLoadBalance

  • 随机,按权重设置随机概率。
  • 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。

    2.RoundRobinLoadBalance

  • 轮循,按公约后的权重设置轮循比率。
  • 存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。

    3 .LeastActiveLoadBalance

  • 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。
  • 使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。

    4.ConsistentHashLoadBalance

  • 一致性Hash,相同参数的请求总是发到同一提供者。
  • 当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。

二.配置

    负载均衡的方式可以在消费端配置,也可以在服务端配置,配置属性loadbalance即可。

    1.在消费端配置

<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" loadbalance="roundrobin"/>

     2.在服务端配置

<dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" loadbalance="roundrobin"/>

     3.监控管理平台上配置

三.测试结果

    采用消费端配置负载均衡方式。

    随机方式

<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" loadbalance="random"/>

    打印结果

轮询方式

<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" loadbalance="roundrobin"/>

输出结果

最少活跃调用方式

<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" loadbalance="leastactive"/>

一致性Hash方式---相同参数的请求总是发到同一提供者

  可以去了解下源码实现以及自定义扩展策略

猜你喜欢

转载自my.oschina.net/u/3737136/blog/1630651