Есть ли вариант использования для хранения больших банок (1-5M) в zookeeper? - PullRequest
0 голосов
/ 02 ноября 2018

Наша команда работает с хорошо известным COTS-продуктом на основе OSGI, который работает как автономный сервис (он не взаимодействует с несколькими экземплярами самого себя). Продукт содержит API, который позволяет разработчикам встраивать дополнительные функции в проект. Этот продукт хранит в zookeeper то, что может быть банками большого размера (1-5M), вместе с другими данными конфигурации. Продукт COTS также включает много открытых ресурсов (tomcat, zookeeper, многие другие продукты apache и т. Д.). Благодаря продукту, написанному на Java, я хорошо понимаю дизайн и исходный код.

В нашем экземпляре продукта периодически возникали проблемы с правильным запуском, и проблема, по словам поставщика, заключается в том, что продукт либо не может правильно записать или прочитать zookeeper либо при остановке, либо при запуске продукта (поставщик не пока точно знаю). Эта проблема только начала появляться, когда мы начали добавлять эти большие jar-файлы в папку products ./deploy.

Я не верю, что к этому продукту применимы варианты использования кэша узла или пути https://github.com/Netflix/curator/wiki/Recipes

Полное раскрытие: в настоящее время я немного разбираюсь в zookeeper и безуспешно пытаюсь найти рецепт / вариант использования, в котором можно было бы использовать zookeeper для хранения больших двоичных банок. Я также признаю, что могу задавать неправильный вопрос этой аудитории.

Является ли приведенный выше сценарий распространенным вариантом использования zookeeper?

1 Ответ

0 голосов
/ 05 ноября 2018

ZooKeeper - это консенсусное хранилище, которое позволяет нескольким процессам совместно использовать общее представление общего ресурса, оно не является хранилищем больших двоичных объектов и не должно использоваться как одно.

Во-первых, ZooKeeper - плохой выбор для хранения данных в автономном экземпляре. Если вам не нужен распределенный консенсус между несколькими читателями / писателями, тогда ZooKeeper - это полное излишество.

Во-вторых, узлы ZooKeeper предназначены для хранения небольших данных, которые часто изменяются, возможно, многие читатели следят за изменениями - добавляемые вами файлы JAR, похоже, не соответствуют этому шаблону, поскольку их нет. много читателей (продукт является отдельным экземпляром) и файлы JAR имеют большой размер.

Конфигурация ZooKeeper по умолчанию устанавливает жесткий предел в 1 МБ хранилища на ZNode, и в идеале вы сохраняете намного меньше. Это может быть увеличено, но не рекомендуется делать это. Я настоятельно рекомендую вам использовать правильное хранилище файлов (или даже просто файловую систему, поскольку ваш узел автономен) для хранения этих файлов JAR.

...