1)RandomLoadBalance【默认】

加权随机策略,根据一定权重在不同服务之间随机选择,在调用量较大的情况下可以达到很好的均衡效果,同时可以手动调节权重,较为灵活。但可能会出现累积请求的问题,如果某一台机器执行较慢,那么后面的请求打到上面也会等待,久而久之就都累积在一台机器了。

2)RoundRobinLoadBalance

加权轮询策略,根据设定的权重比例分配不同服务节点的调用比例,如果按照传统的轮询方式可能会造成请求密集到一台机器上的情况,因此Dubbo中借鉴了Nginx中的平滑加权轮询算法,避免这种情况。
image.png

3)LeastActiveLoadBalance

加权最少活跃优先策略,这里的活跃数实际上就是累积的请求数量,一个节点处理能力越强那么累积下的请求自然就更少。以此我们可以把更多的请求分发给处理能力更强的节点,提高处理能力。

4)ShortestResponseLoadBalance

加权最短响应优先策略,这里会有一个滑动窗口的概念,在滑动窗口范围中得到请求响应最多的节点可以被认为是处理能力较强的,那么我们也就可以依据这一点去进行请求分发,优先考虑处理能力强的。

5)ConsistantHashLoadBalance

一致性哈希策略,相同参数的请求会被分发到同一个节点上,当该节点挂壁之后会基于虚拟节点分发到其他节点上。
默认只对第一个参数 Hash,可以配置<dubbo:parameter key="hash.arguments" value="0,1"/>来支持多个参数哈希。
默认用 160 份虚拟节点,可以配置<dubbo:parameter key="hash.nodes" value="320"/>来调整数量。