2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
ZooKeeper — это высокодоступная служба распределенной координации, которая широко используется в распределенных системах для решения проблемы согласованности распределенных систем. Ниже будут подробно представлены основные принципы ZooKeeper, включая его архитектуру, модель данных, основной механизм и протокол согласованности.
ZooKeeper использует архитектуру «главный-подчиненный», которая обычно состоит из лидера и нескольких последователей. Также существуют узлы-наблюдатели в качестве узлов без права голоса, чтобы разделить давление запросов на чтение.
ZooKeeper хранит данные в древовидной структуре, аналогичной файловой системе, и каждый узел называется znode.
Между каждым клиентом и кластером ZooKeeper устанавливается сеанс для поддержания состояния соединения и управления временными узлами. ZooKeeper определяет состояние соединения клиента с помощью механизма пульса. Если в течение определенного периода времени пульс не получен, сеанс считается отключенным.
Чтобы обеспечить согласованность данных каждого узла, ZooKeeper использует механизм синхронизации данных. Когда узел-лидер обрабатывает запрос на запись, он отправляет операцию изменения всем узлам-ведомителям. Узел-ведомитель подтвердит принятие операции изменения, а узел-лидер в конечном итоге решит, была ли операция изменения успешной.
ZooKeeper поддерживает механизм Watch. Клиент может зарегистрировать Watch на указанном znode. Когда данные или дочерние узлы znode изменятся, ZooKeeper уведомит клиента.
ZooKeeper использует протокол согласованности под названием ZAB (Zookeeper Atomic Broadcast) для обеспечения согласованности данных. ZAB состоит из двух этапов: этапа выборов и этапа вещания.
Когда кластер ZooKeeper запускается или узел Лидера выходит из строя, необходимы выборы для определения нового Лидера. Этап выборов в основном делится на следующие этапы:
После определения лидера наступает фаза трансляции. Лидер отвечает за обработку запроса на запись клиента и трансляцию операции изменения всем ведомым узлам. Конкретные шаги заключаются в следующем:
Ниже приведен простой пример использования ZooKeeper, показывающий, как создавать узлы, читать данные узла и регистрировать Watch.
существовать pom.xml
Представьте зависимость клиента ZooKeeper.
xmlКопировать код