McDonnell Douglas AH-64 Apache
- 1 year ago
- 0
- 0
Apache ZooKeeper — открытая программная служба для координации распределённых систем, организованная на основе резидентной базы данных категории « ключ — значение ». Изначально входила в экосистему Hadoop , впоследствии стала проектом верхнего уровня Apache Software Foundation . Распространяется под лицензией Apache 2.0 .
Распределённые системы записывают в базу Zookeeper конфигурации и служебную информацию, например, требуемую для поддержки блокировок . Сам Zookeeper является отказоустойчивой распределённой системой — несколько экземпляров (обычно нечётное), устанавливаемые на разные узлы, обеспечивают высокую доступность за счёт резервирования . База данных у такого кластера, называемого ансамблем, общая, и целиком хранится на каждом из узлов, за её синхронизацию отвечает Zookeeper, а клиенты — распределённые системы, пользующиеся ей как координатором, — могут обращаться к любому из узлов Zookeeper. При запуске ансамбля определяется лидер с использованием алгоритма Raft , ответственный за автоматические восстановление служб в случае отказа одного из узлов. Для обеспечения защиты от сбоев ведётся журнал предзаписи и производятся мгновенные снимки .
Система спроектирована под рабочие нагрузки с преобладанием чтения, то есть наиболее эффективно её использование при достаточно небольшом количестве изменений конфигурации и при частом обращении к ним. Пространство ключей (называемых ZNode) организовано в иерархию, значения могут быть записаны не только в листовые ключи, но и в узлах иерархии.
Клиенты могут поддерживать сессию — постоянное подключение к Zookeeper, подтверждая присутствие в системе регулярной посылкой пульс-сигнала ( англ. heartbeat); если по прошествии заданного таймаута ожидаемый пульс-сингал не поступил, то координатор считает сессию утраченной. Клиенты могут задавать сессионные ключи и значения, называемые «эфемерными узлами», действующие только на период действия сессии. Также есть механизм подписки на события, посредством которых реализуются различные схемы блокировок.
Система создана в Yahoo для координации HBase и впоследствии получила распространение в экосистеме Hadoop , в которой значительное количество распределённых систем используют ZooKeeper в качестве координатора, среди таковых , Hive , Kafka , , Solr , Spark , NiFi , , , .