Zookeeper

Zookeeper —

простыми словами

cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software Foundation.

Как правило, Zookeeper используют для:

  • Создания распределенного сервера имен.
  • Определения лидера в других кластерных системах.
  • Создания распределенной конфигурации других приложений (например, Kafka, ClickHouse).

Приложение является открытым и может быть загружено с официального сайта.

Архитектурно, Zookeeper представляет клиент-серверное приложение и включает в себя следующие компоненты:

  1. Клиент — узел в кластере, который находится на связи с сервером, постоянно отправляя ему сигналы о своей работоспособности (heartbeat), который не должен превышать определенное значение (определяется параметром tickTime).
  2. Сервер — одна из нод кластера Zookeeper, которая проверяет состояние клиентов и перенаправляет запросы на один из рабочих серверов (клиентов).
  3. Лидер — главный сервер среди серверов кластера (ансамбля). Он отвечает за все операции записи.
  4. Последователь — все серверы в ансамбле, за исключением лидера. Они принимают от последнего информацию на изменение и записывают ее у себя.
  5. Ансамбль — кластер из серверов Zookeeper. Лидер определяется при старте служб, а если происходит разрыв соединения — на основе кворума. Поэтому минимальное количество нод в ансамбле является 3-м.

Для своей работы использует порты:

Приложение по умолчанию работает на следующих портах:

ПортОписание
2181Порт для клиентских подключений.
2888Репликация данных между нодами кластера.
3888Выбор лидера между нодами кластера.

В качестве альтернатив выделяют: