当前位置:   article > 正文

dubbo负载均衡-RandomLoadBalance

dubbo负载均衡

dubbo负载均衡-RandomLoadBalance

发表于 2019-10-13

前言

之前在面试中被问及dubbo的负载均衡,当时没有系统的回答出来,今天查阅了一下官方文档,于是出现了这篇文章。dubbo主要有4种负载均衡方式,分别是:基于权重随机算法的RandomLoadBalance、基于最少活跃调用数算法的LeastActiveLoadBalance、基于Hash一致性的ConsistentHashLoadBalance、以及基于加权轮询算法的RoundRobinLoadBalance。

源码分析

在 Dubbo 中,所有负载均衡实现类均继承自 AbstractLoadBalance,该类实现了 LoadBalance 接口,并封装了一些公共的逻辑。所以在分析负载均衡实现之前,先来看一下 AbstractLoadBalance 的逻辑。首先来看一下负载均衡的入口方法 select,如下:

\@Override  
public \<T> Invoker\<T> select\(List\<Invoker\<T>> invokers, URL url, Invocation invocation\) \{
     
 if \(invokers == null |\| invokers.isEmpty\(\)\)  
 return null;  
 // 如果 invokers 列表中仅有一个 Invoker,直接返回即可,无需进行负载均衡  
 if \(invokers.size\(\) == 1\)  
 return invokers.get\(0\);  
    
 // 调用 doSelect 方法进行负载均衡,该方法为抽象方法,由子类实现  
 return doSelect\(invokers, url, invocation\);  
\}  
  
protected abstract \<T> Invoker\<T> doSelect\(List\<Invoker\<T>> invokers, 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号