dubbo提供者停止服务后zookeeper临时节点不能自动摘除

测试环境中,Dubbo服务提供者出现重复节点且停止服务后无法从Zookeeper中自动移除。经排查,确认节点为临时节点,Zookeeper配置正常,时间戳问题成为关键。发现由于过去系统在Zookeeper上创建的节点时间戳停留在2020年,与当前时间不符,导致session关闭后临时节点未删除。解决方案是通过Curator删除时间戳异常的临时节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试环境的dubbo服务提供者出现多个重复提供者,且停服务后服务节点无法摘除。

zookeeper客户端使用的curator,首先排查curator创建的节点是否是临时节点,在本地环境起服务调试到AbstractZookeeperClient:

  @Override
    public void create(String path, boolean ephemeral) {
        if (!ephemeral) {
            if (checkExists(path)) {
                return;
            }
        }
        int i = path.lastIndexOf('/');
        if (i > 0) {
            create(path.substring(0, i), false);
        }
        if (ephemeral) {
            createEphemeral(path);
        } else {
            createPersistent(path);
        }
    }

发现确实走的createEphemeral(path);
用zkCli.sh get查看dubbo provider节点发现确实也是临时节点:

非原图,信息类似
非原图,信息类似。

再查看tickTime、initLimit、syncLimit等配置项也正常。

排查到这里有点没头绪了,然后找到网上有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值