Разработчик(и) | Фонд программного обеспечения Apache |
---|---|
Стабильный релиз | 3.8.1 / 30 января 2023 г. ( 2023-01-30 ) [1] |
Репозиторий | Репозиторий ZooKeeper |
Написано в | Ява |
Операционная система | Кроссплатформенный |
Тип | Распределенные вычисления |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | zookeeper.apache.org |
Apache ZooKeeper — сервер с открытым исходным кодом для высоконадежной распределенной координации облачных приложений. [2] Это проект Apache Software Foundation .
ZooKeeper по сути является сервисом для распределенных систем , предлагающим иерархическое хранилище ключей и значений , которое используется для предоставления распределенного сервиса конфигурации , сервиса синхронизации и реестра имен для больших распределенных систем (см. Примеры использования ). [3] ZooKeeper был подпроектом Hadoop , но теперь является самостоятельным проектом Apache верхнего уровня .
Архитектура ZooKeeper поддерживает высокую доступность за счет избыточных служб . Таким образом, клиенты могут обратиться к другому лидеру ZooKeeper, если первый не отвечает. Узлы ZooKeeper хранят свои данные в иерархическом пространстве имен, похожем на файловую систему или древовидную структуру данных. Клиенты могут читать и писать на узлы и, таким образом, иметь общую службу конфигурации. ZooKeeper можно рассматривать как атомарную систему вещания , через которую обновления полностью упорядочиваются . Протокол ZooKeeper Atomic Broadcast (ZAB) является ядром системы. [4]
ZooKeeper используется такими компаниями, как Yelp , Rackspace , Yahoo !, [5] Odnoklassniki , Reddit , [6] NetApp SolidFire , [7] Meta , [8] Twitter [9] и eBay, а также системами корпоративного поиска с открытым исходным кодом , такими как Solr , и распределенными системами баз данных, такими как Apache Pinot . [10] [11]
ZooKeeper смоделирован по образцу сервиса блокировки Chubby от Google [12] [13] и изначально был разработан в Yahoo! для оптимизации процессов, работающих на кластерах больших данных, путем сохранения статуса в локальных файлах журналов на серверах ZooKeeper. Эти серверы взаимодействуют с клиентскими машинами, чтобы предоставить им информацию. ZooKeeper был разработан для исправления ошибок, которые возникали при развертывании распределенных приложений больших данных.
Некоторые из основных функций Apache ZooKeeper:
Некоторые общие термины, касающиеся архитектуры ZooKeeper:
Службы в кластере реплицируются и хранятся на наборе серверов (называемых «ансамблем»), каждый из которых поддерживает базу данных в памяти, содержащую все дерево данных состояния, а также журнал транзакций и снимки, которые хранятся постоянно. Несколько клиентских приложений могут подключаться к серверу, и каждый клиент поддерживает TCP-соединение, через которое он отправляет запросы и сигналы, получает ответы и отслеживает события для мониторинга. [14]
Типичные варианты использования ZooKeeper:
Помимо клиентских библиотек, входящих в дистрибутив ZooKeeper, доступен ряд сторонних библиотек, таких как Apache Curator и Kazoo, которые упрощают использование ZooKeeper, добавляют дополнительные функции, дополнительные языки программирования и т. д.