我知道 Apache Curator 可以执行构建在 zookeeper 之上的分布式锁功能。根据 Apache Curator 官方网站上发布的文档,它看起来非常易于使用。例如:
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
CuratorFramework client = CuratorFrameworkFactory.newClient("host:ip",retryPolicy);
client.start();
InterProcessSemaphoreMutex lock = new InterProcessSemaphoreMutex(client, path);
if(lock.acquire(10, TimeUnit.SECONDS))
{
try { /*do something*/ }
finally { lock.release(); }
}
但是“InterProcessSemaphoreMutex”的第二个参数“path”是什么意思呢?这意味着基于 API 的“锁的路径”,但它到底是什么?谁能给我一个例子?
如果我有数百万个锁,我是否必须创建数百万个“通往锁的路径”?zookeeper 集群的最大锁数(znodes)是否有限制?或者我们可以在进程释放它时移除这个锁吗?