Наш проект сильно зависит от распределенной блокировки. Я знаю, что куратор предоставляет несколько видов замков. Мой вопрос: могу ли я просто использовать создающий узел в качестве мьютекса?
CuratorFramework zkClient = zookeeperConnectionProvider.getZkClientForJobDistributeLock();
try {
zkClient.create()
.creatingParentsIfNeeded()
.withMode(CreateMode.EPHEMERAL)
.forPath("/" + job.getIdentifier().jobNodeString());
LOGGER.info(String.format("create node in zookeeper [%s]", job.getIdentifier().jobNodeString()));
} catch (Exception e) {
LOGGER.info(String.format("create job instance node in zookeeper failed [%s], reason [%s]",
job.getIdentifier().jobNodeString(),
e.getClass().getCanonicalName()));
return NO_WORK;
}
Когда первый процесс успешно создается, второй процесс получает исключение NodeExistsException
. Если это не может работать, я хочу знать причину.