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

Java ZooKeeper

Базовые концепты

  1. Роль В кластере zookeeper есть три роли для узлов, и каждый узел может иметь только одну роль одновременно. Все машины в кластере проходят процесс выбора лидера, чтобы выбрать машину, называемую лидером. Лидер: Принимает запросы предложений от всех Последователей и координирует голосование по предложению в едином порядке, а также отвечает за внутренний обмен данными со всеми Последователями. Подписчик: обслуживайте клиента напрямую, участвуйте в голосовании по предложению и одновременно обменивайтесь данными с лидером. Наблюдатель: напрямую обслуживает клиента, но не участвует в голосовании предложения, а также обменивается данными с Лидером

  2. беседа В zookeeper клиент устанавливает TCP-соединение с сервером при его запуске.С момента установления первого соединения начинается жизненный цикл клиентской сессии.Благодаря этому соединению клиент может поддерживать действующую сессию с сервером через сердцебиение обнаружения, а также Возможность отправлять запросы на сервер и получать ответы, а также получать уведомления о событиях с сервера.

  3. узел Как правило, узел в распределенном контексте относится к каждому серверу, составляющему кластер.В zookeeper есть еще один уровень значения, который называется узлом данных (ZNode).  Структура всего пространства имён zookeeper иерархична, похожа на структуру файловой системы Linux, это дерево. Иерархия пространств имен разделена косой чертой (/), а пространство имен каждого узла в пространстве имен определяется путем к узлу. Каждый ZNode будет сохранять свое собственное содержимое данных, а также ряд информации об атрибутах.

  4. Версия Для каждого ZNode zookeeper будет поддерживать для него структуру данных, называемую Stat.Stat записывает три версии данных ZNode, версию (номер версии содержимого данных текущего ZNode), cversion (номер версии текущего дочернего узла ZNode), неприятие (номер версии изменения ACL текущего ZNode)

  5. наблюдатель Zookeeper позволяет пользователям регистрировать некоторых наблюдателей на указанных узлах, и когда происходит определенное событие, сервер zookeeper уведомляет заинтересованных клиентов об этом событии.Этот механизм является важной функцией zookeeper для реализации служб распределенной координации.

клиентская команда

Вот список часто используемых клиентских команд.Так называемые клиентские команды относятся к командам, используемым после подключения к серверу zookeeper с помощью zkCli.Синтаксис соединения zkCli следующий: zkCli -server host:port cmd args zkCli — это имя исполняемого файла клиента, которое может быть zkCli.sh или zkCli.cmd в зависимости от конкретной операционной системы. host — IP-адрес или доменное имя сервера, port — номер порта сервера, если адресов серверов несколько, они разделяются запятыми cmd — конкретная команда, args — параметр команды, вы также можете выполнить команду после подключения к серверу.

  1. Просмотр узлов лс/путь Просмотрите дочерние узлы с именем /path, но только все дочерние узлы на первом уровне ниже указанного узла. ls2/путь Просмотрите дочерний узел с именем /path и просмотрите информацию об атрибутах, например количество обновлений.

  2. создать узел создать [-s] [-e] /путь к данным Создайте узел с именем /path с данными data. Добавление -s указывает, что создается последовательный узел, а добавление -e указывает, что создается временный узел.Если ни один из них не добавлен, по умолчанию создается постоянный узел.

  3. удалить узел удалить /путь удалить узел с именем /path

  4. установить данные узла установить / данные пути Установить данные узла с именем /путь к данным

  5. вернуть данные узла получить/путь Возвращает данные и информацию об атрибутах для узла с именем /path

  6. Принудительно синхронизировать данные синхронизировать/путь Принудительно синхронизировать узел с именем /путь к последним данным

  7. справочная информация помощь Команда справки, показывающая команды и форматы синтаксиса, поддерживаемые клиентом.

  8. покидать покидать 退出当前客户端,会话结束。

Команда эксплуатации и обслуживания

Zookeeper предоставляет несколько четырехсимвольных команд для получения текущего состояния и соответствующей информации о сервере zookeeper.Эти команды полезны при эксплуатации и обслуживании системы. Пользователи могут отправлять соответствующие команды zookeeper через telnet или nc на стороне клиента, например, в режиме nc: echo cmd|nc хост-порт cmd — это специальная команда (также называемая четырехсимвольной командой, поскольку обычно это четыре буквы), host — это IP-адрес или доменное имя сервера zookeeper, а port — это номер порта zookeeper.

  1. конф Отображает подробную информацию о конфигурации службы, такую ​​как каталог файла данных, каталог файла журнала, единица времени интервала, алгоритм выбора, порт выбора и т. д.

  2. минусы Отображает полные сведения о соединении/сеансе для всех клиентов, подключенных к серверу. Включая количество пакетов, «полученных/отправленных», идентификатор сеанса, задержку операции, последнюю выполненную операцию и т. д.

  3. кора Сбросить все соединения.

  4. свалка Список необработанных сеансов и эфемерных узлов.

  5. envi Отображение сведений о среде сервера, таких как версии ZooKeeper, версии операционной системы, адреса JDK и т. д.

  6. требования Список необработанных запросов.

  7. руок Проверьте, находится ли служба в правильном состоянии. Если это так, сервис возвращает «имок», иначе ничего не происходит.

  8. статистика Выводит список производительности и подключенных клиентов.

  9. часы Список сведений о просмотре сервера.

  10. Вагон Список подробной информации о серверных часах по сеансу, его выход - список сеансов, связанных с наблюдателем.

  11. wchp Перечислите сведения о просмотре сервера по пути, его вывод — это путь, связанный с сеансом.

Выше перечислены некоторые часто используемые команды из четырех слов.Официальная документация зоопарка, который подробно описан в разделе [Команды ZooKeeper].

характеристика

  1. последовательность Zookeeper хорошо гарантирует, что создание узлов должно быть глобально уникальным в случае распределенного высокого параллелизма, то есть гарантировать, что клиент не сможет повторно создать существующий узел данных. Согласно теории CAP, распределенная система может удовлетворять только двум из трех пунктов согласованности (Consistence), доступности (Availability) и устойчивости к разделению (partitioning), но удовлетворить всем трем пунктам невозможно. Для zookeeper он реализует доступность A, отказоустойчивость раздела P, строгую согласованность записи в C и то, что теряется, — это согласованность чтения в C. Чтобы объяснить далее, гарантии согласованности zookeeper включают следующее:
  • последовательная согласованность Обновление клиента будет записано на сервер в порядке, в котором он был отправлен.
  • атомарность Обновления либо завершаются успешно, либо завершаются ошибкой, без частичных результатов.
  • единый образ системы Клиенты будут подключаться только к тем экземплярам с последним статусом в списке хостов. Если экземпляр, к которому он подключается, зависает, клиент попытается переподключиться к другим экземплярам в кластере.В это время другие экземпляры, которые отстают от отказавшего экземпляра, не получат запрос на подключение, только экземпляры той же или более новой версии. как неудачный экземпляр, чтобы получить запрос на подключение.
  • Упорство После завершения операции записи она будет постоянно храниться и не будет затронута сбоем сервера.
  • Параллельная согласованность zookeeper не гарантирует, что два разных клиента будут иметь согласованное представление данных в любое время, из-за сетевых задержек один клиент может обновиться до того, как другой получит уведомление об изменении. Если важно, чтобы разные клиенты читали одно и то же значение, то клиент должен вызвать метод sync() перед выполнением операции чтения, чтобы экземпляр zookeeper, подключенный к соединению операции чтения, мог быть синхронизирован с лидером, поэтому что он может читать последний контент категории.
  1. наблюдатель монитор Если клиент регистрирует наблюдателя для узла, при изменении содержимого узла или его дочерних узлов сервер zookeeper отправит уведомление об изменении подписанному клиенту.

  2. временный узел Для временного узла, созданного на zookeeper, после истечения сеанса между клиентом и сервером временный узел автоматически очищается.

  3. последовательный узел Когда клиент подает заявку на создание узла, zookeeper автоматически добавит возрастающий порядковый номер в конце пути к узлу.

Сценарии применения

  1. выпуск подписки на данные Централизованно управляйте информацией о конфигурации в приложении zookeeper. Приложение берет на себя инициативу получения информации о конфигурации от сервера zk при запуске и регистрирует наблюдателя на указанном узле. Таким образом, пока информация о конфигурации изменяется, сервер будет уведомлять всех подписанных клиентов в режиме реального времени.

  2. Служба доменных имен Поместите информацию о конфигурации доменного имени в zookeeper и предоставьте набор услуг для регистрации доменного имени, разрешения доменного имени и определения доступности доменного имени. На основании этого предоставляется услуга динамического DNS.

  3. Глобально уникальный идентификатор Свойства последовательных узлов можно использовать для создания глобально уникальных идентификаторов.

  4. Распределенное скоординированное уведомление Используйте мониторинг наблюдателя, чтобы обеспечить координацию и уведомление между системами, чтобы реализовать обработку изменений данных. Разные клиенты регистрируют наблюдателя на одном и том же узле данных в zookeeper. Если узел данных меняется, все подписанные клиенты могут быть уведомлены.

  5. Мастер выборов Используя сильную консистенцию зоофитора при создании узлов, клиентский кластер регулярно создает временный узел с тем же именем на Zookeeker. В этом процессе может быть успешно создан только один клиент, затем клиент становится главным, и другим клиентам, которые не создаются, успешно регистрируйте наблюдение за изменением узла на узле, чтобы отслеживать, выживает ли текущая мастер-машина. Установлено, что мастер Висит оставшиеся клиенты и повторно управляет главными выборами.

  6. Распределенная блокировка

  • эксклюзивный замок Используя строгую согласованность, временный узел в zookeeper представлен как эксклюзивная блокировка. Все клиенты создают узел одновременно. В конце концов, только один клиент может быть успешно создан. Тогда считается, что клиент получил блокировку, и узел регистрируется в то же время, наблюдатель слушает. Блокировка считается снятой, когда узел удаляется.

  • общий замок Используя строгую согласованность, временный последовательный узел в zookeeper представляется как разделяемая блокировка, а наблюдатель регистрирует мониторинг дочерних узлов того же уровня. При оценке порядка чтения и записи обратите внимание на тип дочернего узла того же уровня с меньшим порядковым номером, чем его собственный, в соответствии с различными потребностями.