Видео: 4.13. Apache Zookeeper | Application 2024
Большой кластер из баз данных NoSQL - это громоздкая вещь для управления. Apache Zookeeper на помощь! Отслеживание того, какие узлы находятся в кластере, какие данные управляют каждый, и обеспечение выбора новых мастеров при сбое мастера - непростые задачи.
Поэтому координация больших распределенных систем очень сложна. Оба Hadoop и распределенные базы данных NoSQL нуждаются в способе управления конфигурацией всего кластера. Этот процесс также должен быть высокодоступным, чтобы он не являлся единственной точкой отказа в общей системе.
Здесь находится Apache Zookeeper. Zookeeper обеспечивает распределенное, последовательное согласование службы координации.
Несколько других продуктов используют Zookeeper для управления кластерами:
-
Apache Hadoop
-
Solr Cloud
-
Neo4j
-
Accumulo
-
HBase
-
Rackspace
-
Zynga
-
Yahoo! (для нескольких своих услуг)
Zookeeper предоставляет иерархическую структуру хранения в памяти, похожую на компьютерную файловую систему. Эта структура управляется текущим мастером Zookeeper и реплицируется среди других узлов в кластере. Кластер Zookeeper называется Zookeeper e nsemble.
Только мастер управляет обновлениями (записью) для хранения. Эти изменения проверяются на диск, чтобы сделать их долговечными, а затем реплицируются на другие экземпляры Zookeeper в ансамбле.
Эти службы хранят данные конфигурации кластера в Zookeeper. Некоторые из них также хранят ключевые диапазоны для осколков их базы данных. Это позволяет клиентам, использующим базу данных NoSQL, которая использует Zookeeper для связи с любым сервером Zookeeper в ансамбле. Таким образом, клиенты могут обнаружить, какие серверы NoSQL хранят данные, которые им интересны.
Поиск того, какой узел хранит, какой диапазон ключей минимизирует нагрузку на серверы NoSQL, поскольку им не нужно пересылать запросы на данные из один узел NoSQL к узлу, который фактически хранит данные.
Вы также можете использовать хранилище данных Zookeeper для эфемерного хранилища (хранилище, которое не будет продолжаться до перезапуска службы), что полезно для хранения сеанса или других данных времени выполнения.
Серверы Zookeeper используют это эфемерное хранилище, чтобы определить, кто берет верх, если мастер терпит неудачу. Каждый сервер создает нумерованный эфемерный znode (файл хранения) в ключевом пространстве. Если мастер Zookeeper (лидер) страдает аппаратным сбоем, то владельцем следующего znode в последовательности становится мастер. Это элегантное решение и позволяет избежать эффекта «стада», когда все серверы общаются друг с другом в течение нескольких секунд, чтобы выбрать нового мастера.
Zookeeper - отличное решение Java для проблем, связанных с управлением согласованными системами и высокой доступностью. Вы можете использовать его для реализации высокодоступных сервисов, включая службы обмена сообщениями. Итак, если вам нужно создать новую распределенную службу, подумайте об использовании Zookeeper.