Dubbo(十三)dubbo的负载均衡配置策略

在dubbo的服务提供者集群时,消费端请求分发到哪一个节点,这时就牵扯到dubbo负载均衡问题。dubbo负载均衡有五种配置模式,分别为:

  1. 无策略配置,全完随机分发;
  2. 根据服务权重配置比例,随机分发;
  3. 根据服务权重配置比例,轮询分发;
  4. 最少活跃调用数模式;
  5. 一致性hash模式;

本章提供者,消费者工程代码在如下文章中工程基础之上调整测试:

Dubbo(六)使用SpringBoot搭建dubbo服务提供者工程

Dubbo(七)使用SpringBoot搭建dubbo消费者工程

Dubbo(五)Dubbo 简单监控平台(monitor)搭建

一、无策略配置,全完随机分发模式

及默认的分发模式,不做任何配置时,分发到提供者哪一个节点完全随机。默认情况下权重都为100。我们在我们以前的springboot工程上通过修改配置文件中dubbo协议端口来启动不同的节点。

Dubbo(十三)dubbo的负载均衡配置策略_第1张图片

java代码如下,在远程接口实现方法中打印当前节点端口做区分

Dubbo(十三)dubbo的负载均衡配置策略_第2张图片

启动完成后通过dubbo-admin管理界面可以看到启动成功的同一个接口服务又两个不同节点的提供者信息:

Dubbo(十三)dubbo的负载均衡配置策略_第3张图片

启动消费者工程后我们进行访问测试:其访问打印无规律。

Dubbo(十三)dubbo的负载均衡配置策略_第4张图片

Dubbo(十三)dubbo的负载均衡配置策略_第5张图片

二、根据服务权重配置比例,随机分发

在提供方接口类上@Service注解上通过weight 注解属性进行配置,系统将根据权重之间比例进行随机分发。我们在测试中启动两个服务,比重分别为300和100。

Dubbo(十三)dubbo的负载均衡配置策略_第6张图片

启动成功后dubbo-admin 界面查看如下:

Dubbo(十三)dubbo的负载均衡配置策略_第7张图片

访问请求8次访问后打印如下:可以看到分发比例按照3:1进行分发。

Dubbo(十三)dubbo的负载均衡配置策略_第8张图片

Dubbo(十三)dubbo的负载均衡配置策略_第9张图片

三、根据服务权重配置比例,轮询分发

在注解@Service中指定负载均衡用的属性为loadBalance。前面随机模式中loadBalance默认值都为"random"。在轮询模式中loadBalance需要指定为"roundrobin"。我们启动两个服务负载均衡模式都为"roundrobin",其权重分别为 100和300。通过访问测试我们可以看到,所谓轮询+权重模式配置后,类似于每个节点相当于一个木桶,权重越大的木桶容量约大。反正越小。系统将一次像每个桶中到入同体量的水,当某个桶满了之后,将向未满的桶中再轮询加水。直到全部都添满,再重复往三个不同大小的空桶中继续依次添水。每次添水相当于dubbo每次分发请求。

Dubbo(十三)dubbo的负载均衡配置策略_第10张图片

Dubbo(十三)dubbo的负载均衡配置策略_第11张图片

Dubbo(十三)dubbo的负载均衡配置策略_第12张图片

Dubbo(十三)dubbo的负载均衡配置策略_第13张图片

四、最少活跃调用数模式

最少活跃调用数表示为服务器节点处理接口的能力,处理接口约耗时则活跃数约小,系统会使慢的节点约少接收到请求。配置方式loadbalance="leastactive"。(使用最小活跃调用数时,不要配置权重不然失去了该模式意义)当启动两个服务后通过接口中睡眠时间来模拟接口处理能力,通过控制台可以看到睡眠时间越小的节点获取的请求越多。耗时越久的接收的请求越小。

Dubbo(十三)dubbo的负载均衡配置策略_第14张图片

五、一致性Hash模式

一致性hash模式表示相同接口相同参数的请求将固定发送到某一个节点。在Service注解中使用loadbalance="consistenthash"进行设置。

Dubbo(十三)dubbo的负载均衡配置策略_第15张图片

我们在测试访问时,使用不同的参数111,222,333分别进行测试。通过控制台可以看出某个参数第一次出现在某个节点后,后续的同一个请求同一参数的都将分配在该节点上。

Dubbo(十三)dubbo的负载均衡配置策略_第16张图片

Dubbo(十三)dubbo的负载均衡配置策略_第17张图片

 

你可能感兴趣的:(Dubbo,dubbo,负载均衡)