Apache Zookeeper — open source проект Apache Software Foundation, cервис-координатор, который обеспечивает распределенную синхронизацию небольших по объему данных (конфигурационная информация, пространство имен) для группы приложений. Zookeeper представляет из себя распределенное хранилище ключ-значение (key-value store), гарантирующий надежное консистентное (consistency) хранение информации за счет синхронной репликации между узлами, контроля версий, механизма очередей (queue) и блокировок (lock). За счет использования оперативной памяти и масштабируемости обладает высокой скоростью
Сценарии использования Зукипер:
- Распределенный сервер имен (namespace — topics для Kafka)
- Распределенная конфигурация (Hadoop, Kafka)
- Распределенный членство в группах (распределенные сервисы Kafka, Hadoop)
- Выбор главного в распределенных системах с арбитражом (Leader election).
Как устроен Apache Zookeeper
Архитектурно Зукипер организован по клиент-серверной технологии, когда клиентские приложения обращаются к одному из узлов, объединенных в ансамбль. Среди ансамбля серверов выделяется главный узел — лидер, который выполняет все операции записи и запускает автоматическое восстановление при отказе любого из подключенных серверов. Остальные узлы — подписчики или последователи, реплицируют данные с лидера и используются клиентскими приложениями для чтения.
ZooKeeper имитирует виртуальную древовидную файловую систему из взаимосвязанных узлов, которые представляют собой совмещенное понятие файла и директории. Каждый узел этой иерархии может одновременно хранить данные и иметь подчиненные узлы-потомки.
Достоинства и недостатки Зукипер
Ключевыми преимуществами Zookeeper в распределенных Big Data системах считаются следующие:
- отказоустойчивость кластера;
- синхронизация распределенных сервисов;
- автоматическая синхронизация данных;
- упорядоченность сообщений;
- транзакционность передачи даннных.
Обратной стороной этих достоинств являются следующие недостатки:
- зависимость от оперативной памяти узла;
- избыточное количество серверов;
- особенности ZAB-протокола синхронизации данных в ансамбле серверов;
- ограниченность пространства имен и числа потомков каждого узла.
Подробнее, зачем Apache Zookeeper используется в кластерах Hadooop, Kafka и HBase, а также чем можно его заменить, мы писали здесь. А об архитектуре, основных принципах работы и главных проблемах Зукипер читайте в этой статье.