Zookeeper zkCli.sh创建交换机文档

时间:2015-02-18 17:16:18

标签: apache-zookeeper

对不起,这是一个相当蹩脚的问题。我在ZK网站上搜索和搜索了很长时间,然后我终于选择在这里询问了!

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

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

-s和-e是什么?

虽然这确实是我需要知道的,但我也喜欢知道这些信息的定义,记录和/或描述的位置,因为正如我所说,我搜索了很长时间而不是能够找到它!

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

-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

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

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;
}