dubbo负载算法有四种:
RandomLoadBalance(加权随机算法)
RoundRobinLoadBalance(加权轮询算法)
LeastActiveLoadBalance(最少活跃度算法)
ConsistentHashLoadBalance(一致性哈希算法)
这次只讲加权随机算法
随机算法:随机平均算法是通过随机取值在理想的情况下每个值被获取到的几率是一样的;
加权随机算法:通过增加权重的概念使得莫个数字被获取的几率增加;
dubbo的默认负载算法即是RandomLoadBalance;
dubbo即是java的SPI即是升级,默认从配置文件中加载
@SPI("random")
public interface LoadBalance {
//适配器自适应方法
@Adaptive({"loadbalance"})
<T> Invoker<T> select(List<Invoker<T>> var1, URL var2, Invocation var3) throws RpcException;
}
random=com.alibaba.dubbo.rpc.cluster.loadbalance.RandomLoadBalance
首先要明白什么是invokers:
invokers即是dubbo在注册服务的时候在zookeeper的服务者的节点数据,对zookeeper进行监听在本地维护的服务者信息;
invoker如下所示:
//修改了权重的invoker
dubbo://192.168.178.224:20882/cn.xxxxx.ycloud.database.service.AreaInfoFacade?