Zookeeper zkCli.sh 创建开关文档

Zookeeper zkCli.sh create switches documentation

抱歉,这是一个非常蹩脚的问题。我在 ZK 网站上用谷歌搜索了很长时间,最后还是选择在这里提问!

当我启动 ZooKeeper 的 zkCli.sh 并键入 help 时,对于创建命令,它说:

create [-s] [-e] path data acl

-s 和 -e 的作用是什么?

虽然这确实是我需要知道的,但我也 喜欢 知道这些信息在哪里定义,记录在案 and/or 因为正如我所说,我搜索过找了半天也没找到!

感谢您的帮助!

-s 和 -e 选项用于指定顺序节点或临时节点。

不幸的是,我不确定这是否在任何地方都有记录。幸运的是,Zookeeper 是开源的。我们可以继续检查最好的真相来源 - 代码。

https://github.com/apache/zookeeper/blob/trunk/bin/zkCli.sh

shell 脚本正在启动一个新的 java 进程 - org.apache.zookeeper.ZooKeeperMain。如果没有一些基本的 Java 知识,下一步可能会有点困难,但我们可以尝试简单的代码搜索,看看是否能发现一些东西:

https://github.com/apache/zookeeper/blob/trunk/src/java/main/org/apache/zookeeper/ZooKeeperMain.java

看来实际命令有自己的 class:

https://github.com/apache/zookeeper/blob/trunk/src/java/main/org/apache/zookeeper/cli/CreateCommand.java

宾果游戏。我们可以在顶部看到选项:

 options.addOption(new Option("e", false, "ephemeral"));
 options.addOption(new Option("s", false, "sequential"));

让我们尝试确认一下。稍后在代码中,我们可以看到所有可能的情况:

CreateMode flags = CreateMode.PERSISTENT;
if(cl.hasOption("e") && cl.hasOption("s")) {
    flags = CreateMode.EPHEMERAL_SEQUENTIAL;
} else if (cl.hasOption("e")) {
    flags = CreateMode.EPHEMERAL;
} else if (cl.hasOption("s")) {
    flags = CreateMode.PERSISTENT_SEQUENTIAL;
}