Apache ZooKeeper

Apache ZooKeeper
Логотип программы Apache ZooKeeper
Тип проект Фонда Apache[вд] и База данных «ключ-значение»
Разработчик Apache Software Foundation
Написана на Java[3][1]
Первый выпуск 6 февраля 2011[1]
Аппаратная платформа Java Virtual Machine
Последняя версия
Репозиторий github.com/apache/zookee…
Лицензия лицензия Apache
Сайт zookeeper.apache.org
Логотип Викисклада Медиафайлы на Викискладе

Apache ZooKeeper — открытая программная служба для координации распределённых систем, организованная на основе резидентной базы данных категории «ключ — значение». Изначально входила в экосистему Hadoop, впоследствии стала проектом верхнего уровня Apache Software Foundation. Распространяется под лицензией Apache 2.0.

Распределённые системы записывают в базу Zookeeper конфигурации и служебную информацию, например, требуемую для поддержки блокировок[4]. Сам Zookeeper является отказоустойчивой распределённой системой — несколько экземпляров (обычно нечётное), устанавливаемые на разные узлы, обеспечивают высокую доступность за счёт резервирования. База данных у такого кластера, называемого ансамблем, общая, и целиком хранится на каждом из узлов, за её синхронизацию отвечает Zookeeper, а клиенты — распределённые системы, пользующиеся ей как координатором, — могут обращаться к любому из узлов Zookeeper. При запуске ансамбля определяется лидер с использованием алгоритма Raft, ответственный за автоматические восстановление служб в случае отказа одного из узлов. Для обеспечения защиты от сбоев ведётся журнал предзаписи и производятся мгновенные снимки.

Система спроектирована под рабочие нагрузки с преобладанием чтения, то есть наиболее эффективно её использование при достаточно небольшом количестве изменений конфигурации и при частом обращении к ним. Пространство ключей (называемых ZNode) организовано в иерархию, значения могут быть записаны не только в листовые ключи, но и в узлах иерархии.

Клиенты могут поддерживать сессию — постоянное подключение к Zookeeper, подтверждая присутствие в системе регулярной посылкой пульс-сигнала (англ. heartbeat); если по прошествии заданного таймаута ожидаемый пульс-сингал не поступил, то координатор считает сессию утраченной. Клиенты могут задавать сессионные ключи и значения, называемые «эфемерными узлами», действующие только на период действия сессии. Также есть механизм подписки на события, посредством которых реализуются различные схемы блокировок.

Система создана в Yahoo для координации HBase и впоследствии получила распространение в экосистеме Hadoop, в которой значительное количество распределённых систем используют ZooKeeper в качестве координатора, среди таковых Accumulo, Hive, Kafka, Drill, Solr, Spark, NiFi, Druid, Helix, Pinot.

Примечания

  1. 1 2 https://projects.apache.org/json/projects/zookeeper.json
  2. Release 3.9.2-0 — 2024.
  3. The zookeeper Open Source Project on Open Hub: Languages Page — 2006.
  4. ZooKeeper Recipes and Solutions  (неопр.). zookeeper.apache.org. Дата обращения: 14 февраля 2017. Архивировано из оригинала 16 февраля 2017 года.
Перейти к шаблону «Apache»
Проекты верхнего уровня
Подпроекты
Apache Commons
Lucene
DB[вд]
  • Derby
  • Torque[англ.]
  • DdlUtils[англ.]
  • OJB[англ.]
  • JDO[англ.]
Apache Web Services[англ.]
  • Axis[англ.]
  • Axis2[англ.]
  • CXF
  • WS-Commons[англ.]
  • EWS[англ.]
  • JaxMe[англ.]
  • jUDDI[англ.]
  • Kandula[англ.]
  • Mirae[англ.]
  • Muse[англ.]
  • Pubscribe[англ.]
  • Sandesha[англ.]
  • Scout[англ.]
  • SOAP[англ.]
  • Synapse[англ.]
  • TSIK[англ.]
  • Tuscany[англ.]
  • Woden[англ.]
  • WSIF[англ.]
  • WSRF[англ.]
  • WSS4J[англ.]
  • XML-RPC[англ.]
Другие проекты
Развивающиеся проекты (Incubator)
  • XAP[англ.]
  • River[англ.]
  • OpenEJB[англ.]
  • OpenJPA[англ.]
  • Graffito[англ.]
  • Tuscany[англ.]
  • Log4Net[англ.]
  • Roller
  • Felix
  • Abdera[англ.]
  • CeltiXfire[англ.]
  • FtpServer[англ.]
  • Heraldry[англ.]
  • Ivy[англ.]
  • JuiCE[англ.]
  • Kabuki[англ.]
  • Lokahi[англ.]
  • Lucene.Net[англ.]
  • mod_ftp[англ.]
  • NMaven[англ.]
  • Ode?!
  • stdcxx[англ.]
  • Woden[англ.]
  • WSRP4J[англ.]
  • Yoko[англ.]
  • WADI[англ.]
  • Qpid
  • TripleSoup[англ.]
  • UIMA[англ.]
  • Adobe Flex
Списанные проекты (Attic)
  • AxKit[англ.]
  • Beehive[англ.]
  • Cactus[англ.]
  • ECS[англ.]
  • Excalibur[англ.]
  • Harmony
  • HiveMind[англ.]
  • iBATIS[англ.]
  • Jakarta
  • ORO[англ.]
  • Regexp[англ.]
  • Shale
  • Slide[англ.]
  • Taglibs[англ.]