В этой главе представлены функции узлов Zookeeper и простые сценарии использования. Именно благодаря этим функциям узлов Zookeeper можно использовать для разработки приложений для различных сценариев.

1. Имена ключей узлов одного уровня уникальны

Пример:

$ ls /
$ create /example 2

Если уже существует/exampleузел, то при повторном создании появится сообщение, что он уже существует.

2. При создании узла необходимо указать полный путь

Пример:

$ ls /example
$ create /example/child 0
$ create /example/child/ch01 0

3. При закрытии сессии временные узлы удаляются

Пример:

$ ls /example
$ create -e /example/echild 0

В то же время просмотрите этот узел в терминале 2:

$ ls /example

ctrl+cПосле закрытия соединения в терминале 1 выполните запрос в терминале 2/example/echildУзел исчезает.

$ ls /example

4. Автоматическое создание последовательных узлов

Пример:

$ create -s -e /example 0

5. Механизм watch: прослушивание изменений узлов

Механизм прослушивания событий похож на шаблон наблюдателя. Процесс watch таков: клиент регистрирует watcher на пути узла на сервере, и клиент также хранит конкретный watcher. Когда данные узла или дочерние узлы изменяются, сервер уведомляет клиента, и клиент выполняет обработку обратного вызова. Особое примечание: после однократного срабатывания прослушиваемого события событие становится недействительным.

Совет:Обратитесь к главе «Общие команды» об использовании команды get для прослушивания с помощью watch. В последующих главах будут подробно описаны принципы реализации watch.

6. Команда delete может удалять узлы только на один уровень за раз

Пример:

$ ls /
$ delete /example

Совет: В новых версиях можно использовать командуdeleteallдля рекурсивного удаления.

Благодаря многочисленным возможностям узлов, упомянутым выше, Zookeeper можно использовать для разработки различных классических сценариев приложений, таких как:

  • 1. Публикация/подписка на данные
  • 2. Балансировка нагрузки
  • 3. Распределенная координация/уведомление
  • 4. Управление кластером
  • 5. Управление кластером
  • 6. Управление мастер-узлом
  • 7. Распределённые блокировки
  • 8. Распределённые очереди