читать znode без использования какого-либо клиента zookeeper

В моем кластере есть сервер Zookeeper (я знаю его IP), на котором хранятся мои данные. Я получаю эти данные с помощью пользовательского приложения Java.

Есть ли возможность получить данные от /a/b в шелле, без использования zkCli? У меня не установлен клиент zookeeper, и по разным причинам установить его сложно.

Я ищу что-то вроде echo 'stat' | nc 10.xxx.yyy.zzz 2181, но echo 'get /a/b' | nc ..... ничего не находит.

Спасибо :)


person Costin    schedule 18.05.2016    source источник
comment
ZooKeeper — это сложный протокол по причинам, неразрывно связанным с его основной целью — вы буквально должны обращаться к нескольким серверам, а не только к одному, чтобы быть уверенным, что ответ, который вы получаете, актуален.   -  person Charles Duffy    schedule 18.05.2016
comment
Учитывая, что содержимое, которое у меня есть, редко меняется, мне не особо важно получать текущую версию данных. Есть ли у меня шанс получить информацию? Спасибо, Чарльз :)   -  person Costin    schedule 18.05.2016
comment
Если вы читали Python, см. github.com/python- zk/kazoo/blob/master/kazoo/protocol/ -- краткая форма заключается в том, что даже если вы игнорируете операции, которые клиент должен выполнить, чтобы знать, что его ответы актуальны, протокол представляет собой разновидность упакованного двоичного кода. , и поэтому не особенно поддается реализации в оболочке.   -  person Charles Duffy    schedule 18.05.2016
comment
(... если ваши сложные причины исключают JVM, но не библиотеку Python, вы можете серьезно подумать об использовании kazoo).   -  person Charles Duffy    schedule 18.05.2016
comment
Действительно, протокол далек от простой реализации оболочки. Спасибо   -  person Costin    schedule 18.05.2016
comment
@CharlesDuffy Пожалуйста, подумайте об объединении ваших комментариев в ответ, который я могу принять позже. Спасибо :)   -  person Costin    schedule 18.05.2016


Ответы (1)


ZooKeeper — это сложный протокол по причинам, неразрывно связанным с его основной целью: клиент, совместимый с протоколом, требуется для связи с несколькими серверами, чтобы гарантировать, что получаемый им ответ является актуальным.

Более того, рассматриваемый протокол использует упакованные бинарные структуры, что делает его невозможным для реализации в нативной оболочке.


Я бы предложил:

person Charles Duffy    schedule 18.05.2016
comment
Наконец-то я использовал Kazoo в докере. Легкая работа. 2 строки для установки в Dockerfile, 4 строки кода на питоне для того, чтобы получить узел. Спасибо, Чарльз :) - person Costin; 24.05.2016