在不使用任何zookeeper客户端的情况下读取znode

时间:2016-05-18 13:29:31

标签: shell apache-zookeeper

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

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

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

谢谢:)

1 个答案:

答案 0 :(得分:1)

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

此外,有问题的协议涉及压缩二进制结构,使其无法在本机shell中实现。

我建议:

  • 如果您对安装新软件的限制在某种程度上特定于上游Zookeeper客户端(例如,特定于Java),请考虑替代客户端,例如zookeepercli或(您是否应该编写一些Python)代码)Kazoo
  • 如果您不需要Zookeeper协议的健壮级别,请考虑在ZooKeeper服务器上运行服务,该服务使用本机客户端库执行查找,通过HTTP或原始套接字返回结果,从而允许在其他地方的脚本中使用curlnc