apache / dubbo-website

Apache Dubbo documents
https://dubbo.apache.org/
Apache License 2.0
471 stars 792 forks source link

负载均衡扩展 #2889

Closed wangbang1 closed 10 months ago

wangbang1 commented 10 months ago

文件:META-INF/dubbo/org.apache.dubbo.rpc.cluster.LoadBalance 文件内容:dubboLoadBalance=com.xxxx.xx1.xx2.dubbo.DubboLoadBalance 配置文件: dubbo: consumer: loadbalance: dubboLoadBalance

类: import org.apache.dubbo.rpc.cluster.loadbalance.AbstractLoadBalance;

public class DubboLoadBalance extends AbstractLoadBalance {

@Override
protected <T> Invoker<T> doSelect(List<Invoker<T>> invokers, URL url, Invocation invocation) {
    return null;
}

}

使用的是nacos作为注册中心,consumer的元数据里也有loadbalance=dubboLoadBalance了 在debug调用时,就是进不去,也不打印日志,我理解是没有生效

差不多步骤的org.apache.dubbo.rpc.Filter是生效的,就是LoadBalance不生效 dubbo版本是2.7.23

各位帮忙看看什么原因?谢谢

wangbang1 commented 10 months ago

找到原因了....... 因为我只起了一台服务提供者,所以压根就没有走loadbalance 如下源码 在 ​​AbstractClusterInvoker​​​ 的 ​​invoke​​ 方法中,加载了 loadbalance

    if (invokers.size() == 1) {
        return invokers.get(0);
    }
    Invoker<T> invoker = loadbalance.select(invokers, getUrl(), invocation);

可以看到size为1时都不会调用loadbalance了