不使用任何 zookeeper 客户端读取 znode

read znode without using any zookeeper client

我的集群中有一个 Zookeeper 服务器(我知道它的 IP)用来存储我的数据。我使用自定义 Java 应用程序获取该数据。

是否有可能在 shell 中从 /a/b 获取数据而不使用 zkCli? 我没有安装任何 zookeeper 客户端由于各种原因,安装起来很复杂。

我正在寻找类似 echo 'stat' | nc 10.xxx.yyy.zzz 2181 的内容,但 echo 'get /a/b' | nc ..... 没有检索到任何内容。

谢谢:)

ZooKeeper 是一个复杂的协议,其原因与它的核心目的有着内在的联系:一个符合协议的客户端需要与多个服务器通信,以确保它收到的答案是最新的。

此外,所讨论的协议涉及打包的二进制结构,使其无法在本机中实现 shell。


我建议:

  • 如果您对安装新软件的限制在某种程度上特定于上游 Zookeeper 客户端(例如,特定于 Java),请考虑使用备用客户端,例如 zookeepercli or (should you be amenable to writing some Python code) Kazoo.
  • 如果您不需要 Zookeeper 协议以其他方式保证的稳健级别,请考虑 运行 ZooKeeper 服务器上的一项服务,该服务使用本机客户端库执行查找,通过 HTTP 或原始套接字返回结果,从而允许 curlnc 从您的其他脚本中使用。