Dubbo负载均衡最全详解(6种负载策略)

Dubbo负载均衡最全详解(6种负载策略)-mikechen

Dubbo是一款高性能的Java RPC框架,它提供了多种负载均衡策略,以下是Dubbo中常用的负载均衡策略@mikechen

1.随机(Random)

随机选择一个可用的服务提供者进行请求调度,如下图所示:

Dubbo负载均衡最全详解(6种负载策略)-mikechen

每个服务提供者的权重不考虑,具有相同的被选中概率。

配置如下;

<dubbo:reference id="myService" interface="com.example.MyService" loadbalance="random" />

 

2.轮询(Round Robin)

按照轮询的方式依次选择可用的服务提供者,如下图所示:

Dubbo负载均衡最全详解(6种负载策略)-mikechen

每个服务提供者的权重不考虑,按顺序依次选择。

配置如下:

<dubbo:reference id="myService" interface="com.example.MyService" loadbalance="roundrobin" />

 

3.最少连接(Least Connections)

负载均衡中的”最少连接”策略是一种常见的算法,它会将请求发送到当前连接数最少的服务器上,以实现负载均衡。

如下图所示:

Dubbo负载均衡最全详解(6种负载策略)-mikechen

配置如下:

<dubbo:reference id="myService" interface="com.example.MyService" loadbalance="leastactive" />

在Dubbo中,使用最少连接负载均衡算法,可以确保请求被发送到当前连接数最少的服务提供者上,以实现相对均匀地分配负载。​

适用于处理长连接、或者处理时间不同的请求的情况。比如:视频流服务,其中每个连接可能持续时间不同。

4.一致性哈希(Consistent Hash)

将请求的参数或标识进行哈希计算,选择哈希值最接近服务提供者的节点进行调度。

如下图所示:

Dubbo负载均衡最全详解(6种负载策略)-mikechen

适用于需要保持会话信息或缓存一致性的场景。

配置如下:

<dubbo:reference id="myService" interface="com.example.MyService" loadbalance="consistenthash">
    <dubbo:parameter key="hash.arguments" value="param1,param2" />
</dubbo:reference>

 

5.加权随机(Weighted Random)

为每个服务提供者分配一个权重值,按照权重比例选择服务提供者进行请求调度,权重越高的服务提供者被选中的概率越大。

配置如下:

<dubbo:reference id="myService" interface="com.example.MyService" loadbalance="random">
    <dubbo:parameter key="weights" value="2,1,1" />
</dubbo:reference>

 

6.加权轮询(Weighted Round Robin)

为每个服务提供者分配一个权重值,按照权重比例依次选择服务提供者进行请求调度,权重越高的服务提供者被选中的次数越多。

Dubbo负载均衡最全详解(6种负载策略)-mikechen

配置如下:

<dubbo:reference id="myService" interface="com.example.MyService" loadbalance="roundrobin">
    <dubbo:parameter key="weights" value="2,1,1" />
</dubbo:reference>

mikechen

mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获知最新一线技术干货!

评论交流
    说说你的看法