不使用任何 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 或原始套接字返回结果,从而允许
curl
或 nc
从您的其他脚本中使用。
我的集群中有一个 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 或原始套接字返回结果,从而允许
curl
或nc
从您的其他脚本中使用。