Конференция Arenadata
ArenaTech 2026 – для всех, кому интересны технологии Big Data
Приглашаем вас принять участие в технической онлайн-конференции, посвященной работе с большими данными. Участие бесплатно для всех желающих.

В программе 3 блока докладов:

  • СУБД: архитектура и эксплуатация. Обсудим новые возможности Greengage DB и Arenadata DB на его основе, включая hot standby, обзор утилиты изменения кластерной топологии ggrebalance, вопросы безопасности и устранения CVE.
  • Платформа данных: безопасность и Kubernetes в ADH, аналитика в ADQM. Расскажем об управлении секретами и доступом в Arenadata Hyperwave с использованием OpenBao, особенности переноса сервисов в Kubernetes, а также про аналитические методы в инструментах ADQM.
  • Инструменты: кластерный менеджер, документация, ИИ-поиск. Поделимся опытом разработки технической документации (включая интеллектуальный поиск и ИИ-ассистент) и поговорим про развитие нашего кластерного менеджера ADCM.
Онлайн-конференция состоится 29 октября 2026 года, время трансляции: с 12:00 до 19:00 по московскому времени.
Осталось до события

Обнаружение сервисов в ZooKeeper

ПРИМЕЧАНИЕ

Концепции и основные компоненты ZooKeeper описаны в статье ZooKeeper.

Обзор

Service Discovery — механизм ZooKeeper, действующий как реестр, в котором отслеживаются адреса всех экземпляров. Экземпляры имеют динамически назначаемые сетевые пути.

Система Service Discovery предоставляет механизм для:

  • регистрации сервисов и экземпляров сервисов;

  • поиска экземпляров конкретного сервиса;

  • уведомления об изменении экземпляров сервиса.

Процедура Service Discovery состоит из двух фаз:

  1. Регистрация сервиса (Service Registration).

  2. Обнаружение сервиса (Service Discovery).

Для ипользования механизма Service Discovery с учетом балансировки нагрузки используется пакет curator-x-discovery из состава клиентской библиотеки Java/JVM для Apache ZooKeeper Apache Curator.

Ниже описаны стадии Service Discovery.

Регистрация сервиса (Service Registration)

Когда появляется экземпляр сервиса, он регистрируется в Service Registry ZooKeeper в пространстве имен (namespace) своего сервиса, добавляя свой эфемерный znode. Znode хранит host:port сервера в качестве своих данных. Экземпляр сервиса отправляет запросы heartbeat для подтверждения своего существования (регистрации).

Service Registry — компонент, содержащий базу данных всех доступных экземпляров сервисов. Он хранит сведения о доступных в настоящее время экземплярах каждого сервиса и их сетевые данные для установления соединения.

Service Registry отслеживает изменения в запущенных экземплярах, опрашивая среду развертывания или подписываясь на события. Когда Service Registry обнаруживает новый доступный экземпляр сервиса, он записывает его в свою базу данных. Service Registry также отменяет регистрацию отказавших (отключенных) экземпляров сервиса.

Apache Curator представляет экземпляр сервиса как класс ServiceInstance. ServiceInstances имеют имя, идентификатор, адрес, порт и/или порт ssl, а также необязательную полезную нагрузку (определяемую пользователем). ServiceInstances сериализуются и хранятся в ZooKeeper следующим образом:

base path
       |_______ service A name
                    |__________ instance 1 id --> (serialized ServiceInstance)
                    |__________ instance 2 id --> (serialized ServiceInstance)
                    |__________ ...
       |_______ service B name
                    |__________ instance 1 id --> (serialized ServiceInstance)
                    |__________ instance 2 id --> (serialized ServiceInstance)
                    |__________ ...
       |_______ ...

Обнаружение сервиса (Service Discovery)

После регистрации экземпляров сервисов обнаружение сервиса происходит в следующей последовательности:

  1. Клиент подключается к ансамблю ZooKeeper и запрашивает нужный сервис.

  2. При помощи класса ServiceProvider, используемого в Apache Curator, ZooKeeper использует алгоритм балансировки нагрузки для выбора одного из доступных экземпляров сервиса и возвращает host:port для одного из зарегистрированных экземпляров.

  3. Клиент подключается к экземпляру сервиса.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней