Zookeeper —
cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software Foundation.
Как правило, Zookeeper используют для:
- Создания распределенного сервера имен.
- Определения лидера в других кластерных системах.
- Создания распределенной конфигурации других приложений (например, Kafka, ClickHouse).
Приложение является открытым и может быть загружено с официального сайта.
Архитектурно, Zookeeper представляет клиент-серверное приложение и включает в себя следующие компоненты:
- Клиент — узел в кластере, который находится на связи с сервером, постоянно отправляя ему сигналы о своей работоспособности (heartbeat), который не должен превышать определенное значение (определяется параметром tickTime).
- Сервер — одна из нод кластера Zookeeper, которая проверяет состояние клиентов и перенаправляет запросы на один из рабочих серверов (клиентов).
- Лидер — главный сервер среди серверов кластера (ансамбля). Он отвечает за все операции записи.
- Последователь — все серверы в ансамбле, за исключением лидера. Они принимают от последнего информацию на изменение и записывают ее у себя.
- Ансамбль — кластер из серверов Zookeeper. Лидер определяется при старте служб, а если происходит разрыв соединения — на основе кворума. Поэтому минимальное количество нод в ансамбле является 3-м.
Приложение по умолчанию работает на следующих портах:
Порт | Описание |
---|---|
2181 | Порт для клиентских подключений. |
2888 | Репликация данных между нодами кластера. |
3888 | Выбор лидера между нодами кластера. |
В качестве альтернатив выделяют: