dubbo泛化调用导致zk中同一个消费者节点数递增

dubbo2.6.8 泛化调用导致zk中同一个消费者节点数递增

泛化调用时,如果检查服务是否存在,服务不存在就会抛出异常,但是在此之前consumer节点已经创建,这样只要大量泛化调用这个不存在的服务,就会导致ZK上的consumer节点越来越多,给ZK造成性能问题
在这里插入图片描述
com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry#doRegister
在这里插入图片描述

com.alibaba.dubbo.config.ReferenceConfig
在这里插入图片描述

测试代码

@Component
public class DubboGenericInvoker {

    @Autowired
    private ApplicationConfig application;

    @Autowired
    private RegistryConfig registry;

    public Object invoker(String id, String tag) {

        if (StringUtils.hasText(tag)) {
            RpcContext.getContext().setAttachment(Constants.TAG_KEY, tag);
        }

        ReferenceConfig<GenericService> reference = new ReferenceConfig<>();
        reference.setApplication(application);
        reference.setRegistry(registry);
        reference.setInterface("com.bruce.rpc.service.DubboService");
        reference.setGeneric(true); // 声明为泛化接口

        //reference.setCheck(false);

        try {
            ReferenceConfigCache cache = ReferenceConfigCache.getCache();
            GenericService genericService = cache.get(reference);
            Object o = genericService.$invoke("finfById", new String[]{"java.lang.String"}, new Object[]{id});
            return o;

        } catch (Exception ex) {
            ex.printStackTrace();
            //reference.destroy();
        }
        return "aaa";
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值