ZooKeeper — это программный проект Apache Software Foundation. Он предоставляет открытые распределённые службы конфигурации, службы синхронизации и регистрацию имён для крупномасштабных распределённых вычислений.

Архитектура ZooKeeper обеспечивает высокую доступность за счёт избыточных служб.

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

Это типичное решение для согласованности распределённых данных. Распределённые приложения могут реализовывать на его основе такие функции, как публикация/подписка на данные, балансировка нагрузки, службы именования, распределённая координация/уведомления, управление кластером, выборы Master, распределённые блокировки и распределённые очереди.

Кому следует читать это руководство?

Этот учебник предназначен для профессиональных программистов. С его помощью вы можете шаг за шагом изучить приложения Zookeeper.

Структура данных Zookeeper

Пространство имён, предоставляемое Zookeeper, очень похоже на стандартную файловую систему и хранится в виде ключ-значение. Ключ имени — это ряд элементов пути, разделённых косыми чертами./Каждый узел в пространстве имён Zookeeper идентифицируется по пути.

Связанная теория CAP

Теория CAP утверждает, что для распределённой вычислительной системы невозможно одновременно удовлетворить следующие три пункта:
  • Согласованность: В распределённой среде согласованность означает, могут ли данные оставаться согласованными между несколькими репликами, что эквивалентно тому, что все узлы обращаются к одной и той же последней копии данных. При требовании согласованности, когда система выполняет операцию обновления в согласованном состоянии данных, она должна гарантировать, что данные системы остаются в согласованном состоянии.
  • Доступность:Каждый запрос может получить корректный ответ, но это не гарантирует, что полученные данные являются актуальными.

  • Устойчивость к разделению:Распределённая система всё ещё должна быть способна предоставлять сервисы, удовлетворяющие согласованности и доступности, в случае любого сбоя сетевого разделения, если только вся сетевая среда не выйдет из строя.

Распределённая система может удовлетворять не более чем двум из трёх требований: согласованность, доступность и устойчивость к разделению.

Из этих трёх базовых требований одновременно можно удовлетворить не более двух. P обязательно, поэтому можно выбирать только между CP и AP. Zookeeper гарантирует CP, тогда как Eureka, реестр в системе Spring Cloud, реализует AP.

Теория BASE

BASE — это аббревиатура от Basically Available, Soft-state и Eventually Consistent.

  • Базовая доступность:Когда распределённая система даёт сбой, допускается потеря некоторой доступности (деградация сервиса, деградация страницы).

  • Мягкое состояние:Распределённой системе разрешено иметь промежуточное состояние. Более того, промежуточное состояние не влияет на доступность системы. Промежуточное состояние здесь означает, что обновления данных между различными репликами данных (узлами резервного копирования данных) могут быть отложены, в конечном итоге достигая согласованности.

  • Согласованность в конечном счёте:Реплики данных достигают согласованности через некоторое время.

Теория BASE — это результат компромисса между согласованностью и доступностью в CAP. Основная идея теории: мы не можем достичь строгой согласованности, но каждое приложение может использовать подходящие методы, исходя из собственных бизнес-особенностей, чтобы сделать систему в конечном итоге согласованной.

Связанные ресурсы

Официальный сайт Zookeeper:https://zookeeper.apache.org/