Zookeeper 清除使用apache管理器创建的锁

nhn9ugyo  于 2022-12-09  发布在  Apache
关注(0)|答案(2)|浏览(138)

我是Apache Curator的新手,想确认一些与使用Apache Curator的分布式锁相关的事情:
1.我在创建InterProcessMutex的示例时提供了锁路径“lock/unique_id”。InterProcessMutex dMutex = new InterProcessMutex(curatorClient, "lock/<id>");由于将根据“id”的值创建多个锁,我如何确保旧锁被删除。这是否由管理员处理?如果是,多长时间后此锁将被删除?
1.如果我的JVM示例(最初创建InterProcessMutex对象的示例)被终止,它会自动删除相应的锁吗?

ndh0cuux

ndh0cuux1#

如果您将策展器与ZooKeeper 3.5+一起使用,则会将策展器配方的“父”节点创建为容器ZNode(请参阅http://zookeeper.apache.org/doc/r3.5.7/zookeeperProgrammers.html#Container+Nodes),并且在它们没有子ZNode的一段时间后自动删除。

rkue9o1l

rkue9o1l2#

如果仍有相关性:)
我使用的是ZooKeeper 3.4.10,正如@Randgalt提到的,你必须使用弃用的Reaper。一个例子是:

private void createClient(String zkConnect, int reapingThresholdMs) throws Exception {

 client = CuratorFrameworkFactory.newClient(zkConnect, new ExponentialBackoffRetry(1000, 3));

    client.start();

    reaper = new Reaper(client, reapingThresholdMs);
    reaper.start();
}

public DistributedLock createLock(String lockPath) {
        String fullLockPath = checkPathAndAddPrefix(lockPath);
        reaper.addPath(fullLockPath, Reaper.Mode.REAP_UNTIL_DELETE);
        return new DistributedLock(client, fullLockPath);
    }

相关问题