Принцип работы и основные понятия зоопарка

ZooKeeper

ZooKeeper — это распределенная служба координации распределенных приложений с открытым исходным кодом. Это программное обеспечение, предоставляющее согласованные услуги для распределенных приложений. Предоставляемые функции включают в себя: публикацию/публикацию данных, балансировку нагрузки, обслуживание конфигурации, службу доменных имен, распределенную синхронизацию, групповые службы, и Т. Д. И почему мы выбираем zookeeper, потому что у zookeeper есть следующие характеристики:

Функции инструкция
окончательная согласованность Показывать тот же вид клиенту, что является очень важной функцией в zookeeper.
надежность Если сообщение принято одним сервером, то оно будет принято всеми серверами.
в реальном времени Zookeeper не может гарантировать, что два клиента могут получить обновленные данные одновременно. Если требуются самые последние данные, перед чтением данных следует вызвать интерфейс sync().
независимость Каждый клиент не мешает друг другу
атомарность Обновления могут быть успешными или неудачными, промежуточного состояния нет.
последовательный На всех серверах одно и то же сообщение публикуется в одном и том же порядке.

1. Цели дизайна Zookeeper

 Zookeeper стремится предоставить распределенную службу координации с высокой производительностью, высокой доступностью и возможностями строгого последовательного управления доступом (в основном строгой последовательностью операций записи).Он преследует следующие цели:

  1. Простая модель данных Zookeeper позволяет распределенным программам координировать свои действия друг с другом через общее пространство имен с древовидной структурой.То есть модель данных в памяти сервера Zookeeper состоит из ряда узлов данных, называемых ZNodes.Zookeeper хранит весь объем данных в памяти для повышения пропускной способности сервера и уменьшения задержки.
  2. Можно создавать кластеры.Кластер Zookeeper обычно состоит из группы машин, каждая из которых поддерживает текущее состояние сервера в памяти и взаимодействует друг с другом.
  3. Последовательный доступ, для каждого запроса обновления от клиента Zookeeper будет назначать глобально уникальный добавочный номер, который отражает порядок всех транзакционных операций.
  4. Высокая производительность Zookeeper хранит весь объем данных в памяти и напрямую обслуживает все нетранзакционные запросы клиентов, поэтому он особенно подходит для сценариев приложений, ориентированных на операции чтения.

2. Схема архитектуры зоопарка

Роль смотрителя зоопарка:

Роль описывать
leader Отвечает за инициирование и разрешение голосования и обновление статуса системы.
learner В том числе последователи и наблюдатели, последователи используются для приема клиентских запросов и возврата результатов клиенту, а также участия в голосовании в процессе выбора мастера.Наблюдатель может принимать клиентские подключения и пересылать запросы на запись лидеру, но Наблюдатель не участвует в процессе голосования, а только синхронизирует статус лидера.Назначение наблюдателя-расширить систему и улучшить скорость чтения
client инициатор запроса

Каждый из Серверов в рабочем процессе имеет три состояния:

  1. ИЩУ: Текущий сервер не знает, кто лидер, и ищет
  2. ВЕДУЩИЙ: Текущий сервер является избранным лидером
  3. СЛЕДУЮЩЕЕ: Лидер выбран, и текущий сервер синхронизируется с ним

Как выбрать лидера сервера?
Пройдено наполовину, нечетные выборы
- 3 машины висят одна 2>3/2
- 4 машины висят 2 2 ! >4/2
Конкретный избирательный процесс:
» После запуска каждого сервера он спрашивает другие серверы, за кого он хочет проголосовать.
» На запросы от других серверов сервер отвечает идентификатором рекомендуемого лидера и zxid последней транзакции, обрабатываемой каждый раз в соответствии со своим статусом (каждый сервер будет рекомендовать себя при запуске системы)
» После получения ответов от всех серверов он вычисляет, какой из серверов имеет наибольший zxid, и устанавливает информацию, относящуюся к серверу, в качестве следующего сервера.
» Победителем считается сервер с наибольшим количеством голосов.Если победитель набрал более половины голосов, сервер будет выбран лидером. В противном случае продолжайте процесс до тех пор, пока не будет избран лидер. » Лидер начнет ждать подключения сервера
» Последователь подключается к лидеру и отправляет лидеру наибольший zxid
» Лидер определяет точку синхронизации на основе zxid ведомого
» Сообщите подписчикам, что они обновились после синхронизации
» После того, как ведомый получит сообщение об обновлении, он может повторно принять запрос клиента на обслуживание.

3. Принцип работы зоопарка

Ядром   Zookeeper является атомарная трансляция.Этот механизм обеспечивает синхронизацию между каждым сервером.Протокол, реализующий этот механизм, называется протоколом Zab. Протокол Zab имеет два режима: режим восстановления (выбор мастера) и режим широковещания (синхронизация). Заб переходит в режим восстановления при запуске службы или при сбое лидера.Реанимация режима восстановления заканчивается, когда лидер избран и большинство серверов завершили синхронизацию с состоянием лидера. Синхронизация состояний гарантирует, что лидер и сервер имеют одинаковое состояние системы.
   Как только лидер синхронизировал состояние с большинством фолловеров, он может начать транслировать сообщения, то есть войти в широковещательное состояние. В это время, когда сервер присоединяется к службе zookeeper, он запускается в режиме восстановления, обнаруживает лидера и синхронизирует состояние с лидером. После завершения синхронизации он также участвует в рассылке сообщений. Сервис Zookeeper остается в состоянии Broadcast до тех пор, пока лидер не выйдет из строя или лидер не потеряет поддержку большинства последователей.
  Режим широковещательной рассылки должен гарантировать, что предложения обрабатываются по порядку, поэтому zk использует увеличивающийся идентификатор транзакции (zxid) для обеспечения этого. Все предложения сделаны с добавлением zxid. В реализации zxid — это 64-битное число, а его старшие 32 бита — это эпоха, используемая для определения того, изменились ли отношения лидера.Каждый раз, когда лидер избирается, у него будет новая эпоха. Нижние 32 бита представляют собой счетчик приращений.
   Когда лидер выходит из строя или лидер теряет большинство последователей, zk входит в режим восстановления, и режим восстановления должен переизбрать нового лидера, чтобы восстановить все серверы в правильное состояние.

4. Модель данных Zookeeper

» Иерархическая структура каталогов, названная в соответствии с общепринятыми соглашениями о файловой системе
» Каждый узел называется znode в zookeeper и имеет уникальный идентификатор пути.
» Узел Zузел может содержать данные и дочерние узлы, но узлы типа EPHEMERAL не могут иметь дочерних узлов
» Данные в Znode могут иметь несколько версий.Например, по определенному пути есть несколько версий данных, поэтому данные по этому пути необходимо привести вместе с версией
» Клиентские приложения могут устанавливать мониторы на узлах
» Узлы не поддерживают частичное чтение и запись, но одновременное чтение и запись

5. Узел Zookeeper

» Существует два типа Znodes: эфемерные и постоянные.

» Тип Znode определяется при создании и не может быть изменен позже

» Когда сеанс клиента эфемерного znode завершается, гарантия Zookeeper удалит эфемерный znode, а у эфемерного znode не может быть дочерних узлов.

» Постоянные z-узлы не зависят от клиентских сеансов и удаляются только тогда, когда клиент явно хочет удалить постоянный z-узел.

» Znode имеет четыре формы узлов каталогов

  1. НАСТОЙЧИВЫЙ,
  2. EPHEMERAL
  3. PERSISTENT_SEQUENTIAL,
  4. EPHEMERAL_SEQUENTIAL

6. Гарантия зоопарка

» Запросы на обновление выполняются последовательно, а запросы на обновление от одного и того же клиента выполняются в том порядке, в котором они были отправлены
» Атомарность обновления данных, обновление данных либо выполняется успешно, либо нет
» Глобально уникальное представление данных, независимо от того, к какому серверу подключается клиент, представление данных единообразно
» В режиме реального времени, в пределах определенного диапазона событий, клиент может считывать последние данные

7.ACL

Zookeeper использует стратегию ACL (списки контроля доступа) для управления разрешениями, которая определяет следующие пять разрешений:

 · CREATE: Разрешение на создание дочерних узлов.

  READ: Разрешение на получение данных узла и списка дочерних узлов.

  WRITE: разрешение на обновление данных узла.

  · УДАЛИТЬ: Разрешение на удаление дочерних узлов.

 · ADMIN: Разрешение на установку ACL узла.

Вы в порядке, офицеры? Если вам это нравится, проведите пальцем, чтобы нажать 💗, нажмите, чтобы подписаться! ! Спасибо за Вашу поддержку!

Добро пожаловать в публичный аккаунт【Технический блог Ccww], впервые была запущена оригинальная техническая статья