Узел координации

Узел координации (coordination node) — это объект в YDB, который позволяет клиентским приложениям распределённо координировать свои действия. Типовые сценарии использования узлов координации:

  • Распределённые семафоры и мьютексы.
  • Обнаружение сервисов (service discovery).
  • Выбор лидера (leader election).
  • Очереди задач (task queue).
  • Публикация небольших объёмов данных с возможностью получать оповещения об изменениях.
  • Эфеменрные блокировки произвольных заранее неизвестных сущностей.

Семафоры

Узлы координации позволяют создавать внутри себя семафоры и управлять ими. Типовые операции с семафорами:

  • Создание (create);
  • Захват (acquire);
  • Освобождение (release);
  • Получение содержимого (describe);
  • Удаление (delete).

К семафору может быть приложен счётчик, который ограничивает количество одновременных его захватов, а также небольшой объём произвольных данных.

YDB поддерживает два типа семафоров: персистентные и эфемерные. Персистентный семафор перед захватом необходимо создать, он будет существовать либо до момента его явного удаления, либо до удаления узла координации, в котором он был создан. Эфемерные семафоры автоматически создаются в момент их первого захвата и удаляются при последнем освобождении, что удобно использовать, например, в сценариях распределённой блокировки.

Примечание

Семафоры в YDB не являются рекурсивными. Таким образом, захват и освобождение семафора являются идемпотентными операциями.

Использование

Работа с узлами координации и семафорами осуществляется через отдельные методы в YDB SDK.

Аналогичные системы

С помощью узлов координации YDB можно решать задачи, которые традиционно выполняются с помощью таких систем, как Apache Zookeeper, etcd, Consul и других. Если в проекте используется YDB для хранения данных, а также одна из этих сторонних систем для координации, то переход на узлы координации YDB может сократить количество систем, которые необходимо эксплуатировать и поддерживать.

Предыдущая
Следующая