Apache ZooKeeper
Apache ZooKeeper — открытая программная служба для координации распределённых систем, организованная на основе резидентной базы данных категории «ключ — значение». Изначально входила в экосистему Hadoop, впоследствии стала проектом верхнего уровня Apache Software Foundation. Распространяется под лицензией Apache 2.0.
Apache ZooKeeper | |
---|---|
Тип | проект Фонда Apache[d] и База данных «ключ-значение» |
Разработчик | Apache Software Foundation |
Написана на | Java[2][1] |
Первый выпуск | 6 февраля 2011[1] |
Аппаратная платформа | Java Virtual Machine |
Последняя версия | |
Лицензия | лицензия Apache |
Сайт | zookeeper.apache.org |
Медиафайлы на Викискладе |
Распределённые системы записывают в базу Zookeeper конфигурации и служебную информацию, например, требуемую для поддержки блокировок[5]. Сам Zookeeper является отказоустойчивой распределённой системой — несколько экземпляров (обычно нечётное), устанавливаемые на разные узлы, обеспечивают высокую доступность за счёт резервирования. База данных у такого кластера, называемого ансамблем, общая, и целиком хранится на каждом из узлов, за её синхронизацию отвечает Zookeeper, а клиенты — распределённые системы, пользующиеся ей как координатором — могут обращаться к любому из узлов Zookeeper. При запуске ансамбля определяется лидер с использованием алгоритма Raft, ответственный за автоматические восстановление служб в случае отказа одного из узлов. Для обеспечения защиты от сбоев ведётся журнал предзаписи и производятся мгновенные снимки.
Система спроектирована под рабочие нагрузки с преобладанием чтения, то есть наиболее эффективно её использование при достаточно небольшом количестве изменений конфигурации и при частом обращении к ним. Пространство ключей (называемых ZNode) организовано в иерархию, значения могут быть записаны не только в листовые ключи, но и в узлах иерархии.
Клиенты могут поддерживать сессию — постоянное подключение к Zookeeper, подтверждая присутствие в системе регулярной посылкой пульс-сигнала (англ. heartbeat); если по прошествии заданного таймаута ожидаемый пульс-сингал не поступил, то координатор считает сессию утраченной. Клиенты могут задавать сессионные ключи и значения, называемые «эфемерными узлами» — действующие только на период действия сессии. Также есть механизм подписки на события, посредством которых реализуются различные схемы блокировок.
Система создана в Yahoo для координации HBase и впоследствии получила распространение в экосистемы Hadoop, в которой значительное количество распределённых систем используют ZooKeeper в качестве координатора, в их Accumulo, Hive, Kafka, Drill, Solr, Spark, NiFi, Druid, Helix, Pinot.
ПримечанияПравить
- ↑ 1 2 https://projects.apache.org/json/projects/zookeeper.json
- ↑ The zookeeper Open Source Project on Open Hub: Languages Page — 2006.
- ↑ Apache ZooKeeper™ Releases
- ↑ Release 3.8.1-1 — 2023.
- ↑ ZooKeeper Recipes and Solutions (неопр.). zookeeper.apache.org. Дата обращения: 14 февраля 2017. Архивировано из оригинала 16 февраля 2017 года.