У меня есть распределенное приложение, и я использую zookeeper для управления данными конфигурации на всех распределенных серверах. Моя служба на каждом сервере нуждается в некоторых DLL для запуска. Я пытаюсь создать централизованную систему, откуда я могу скопировать свои DLL на весь сервер. Могу ли я достичь этого, используя zookeeper? Я знаю, что «ZooKeeper обычно не предназначен для хранения большого размера». Мои файлы DLL имеют размер меньше 3 Мб.Скопировать файл с помощью zookeeper
ответ
Существует 1 Мб мягкого ограничения на то, как большие данные узла могут получить. Согласно docs вы можете увеличить максимальный размер данных:
jute.maxbuffer:
(Java системное свойство: jute.maxbuffer)
Этот параметр может быть установлен только как свойство системы Java , На нем нет префикса zookeeper. Он определяет максимальный размер данных, которые могут быть сохранены в znode. Значение по умолчанию - 0xfffff или чуть меньше 1M. Если этот параметр изменен, свойство системы должно быть установлено на всех серверах и клиентах, в противном случае возникнут проблемы. Это действительно проверка здравомыслия. ZooKeeper предназначен для хранения данных размером порядка килобайт.
Я бы не рекомендовал использовать Zookeeper для этой цели (вместо этого вы могли бы гораздо проще разместить двоичные файлы на веб-сервере), но это представляется возможным в теории.
Для передачи файлов вы можете использовать SCP. В качестве данных вы можете передать путь к файлам вашей DLL. Используя SCP, вы можете вытаскивать файлы из базового репозитория.
Zookeeper предназначен для передачи сообщений внутри кластера. Лучшее, что вы можете сделать, это создать Znode_A, который будет содержать Znodes, смотреть znode a для изменений. Каждый Znode в Znode_A будет представлять DLL и будет содержать путь к dll. Каждый узел в кластере наблюдает за данными Znode_A, поэтому, когда будет создана новая dll (znode), узлы будут знать, чтобы скопировать dll из основного репозитория.
знаете ли вы пример проекта, уже использующий этот принцип? возможно, вы могли бы добавить URL-адрес для такого проекта – serup
- 1. Как скопировать файл с помощью NSIS?
- 2. Не удается скопировать файл с помощью пакета
- 3. Невозможно скопировать файл PDF с помощью FileInputStream
- 4. Как скопировать файл с помощью Net :: SSH2?
- 5. как скопировать исполняемый файл с помощью python?
- 6. Скопировать файл в каталог с помощью python
- 7. Как скопировать файл с помощью Paperclip
- 8. Как скопировать открытый файл с помощью VB6?
- 9. Как скопировать файл с помощью кнопки
- 10. PhantomJS скопировать файл с перезаписью
- 11. Атомные действия с ZooKeeper
- 12. Невозможно скопировать с помощью shutil
- 13. Скопировать/Перенести старый zookode znode/данные в новый zookeeper
- 14. scp: как скопировать файл с удаленного сервера с помощью фильтра
- 15. Как скопировать файл с внешнего сервера с помощью PHP?
- 16. fcopy скопировать файл с хоста на vm с помощью tcl
- 17. Как скопировать файл с сетевого диска с помощью Pentaho
- 18. Невозможно скопировать файл с соответствующими разрешениями с помощью FileIOPermission
- 19. Скопировать файлы с помощью SSH
- 20. Как скопировать файл с композитором
- 21. Скопировать файл с повышенными привилегиями
- 22. Скопировать файл с похожим именем
- 23. Скопировать файл с указанным именем?
- 24. Скопировать файл с относительным путем
- 25. Невозможно скопировать файл с C#
- 26. Скопировать файл через scp
- 27. Скопировать файл с помощью PHP Функция copy() настолько медленная
- 28. Как скопировать файл в SharePoint с помощью WebService?
- 29. Как скопировать определенную строку в файл с помощью скрипта Perl
- 30. Как скопировать исполняемый файл UNIX с помощью NSFileManager?
Большое спасибо. У меня есть еще один вопрос –
В моем тесте достаточно просто добавить это на стороне сервера Zookeeper. На стороне клиента изменений не требовалось. Все, что вам нужно сделать, это добавить '-Djute.maxbuffer = 0xA00000' в командную строку запуска Zookeeper, если вы хотите, чтобы размер узла максимального размера составлял 10 МБ. –