Kafka Zookeeper | Полное руководство по Zookeeper Kafka с архитектурой
Zookeeper — важная часть Apache Kafka. Zookeeper является краеугольным камнем для многих распределенных приложений, поскольку он предоставляет фантастические функции. Apache Kafka использует Zookeeper для хранения информации о кластере Kafka и информации о пользователях; Короче говоря, можно сказать, что Zookeeper хранит метаданные о кластере Kafka. Нам важно понять, что такое Zookeeper и как Kafka ему соответствует. Мы подробно посмотрим, что делает Zookeeper, и узнаем, почему нам нужно его использовать.
Что такое Zookeeper?
Zookeeper — это централизованное программное обеспечение с открытым исходным кодом, которое управляет распределенными приложениями. Он предоставляет базовый набор примитивов для реализации синхронизации более высокого уровня, управления структурой, групп и служб именования.
Планируется, что он будет программируемым и простым в использовании. Известными компаниями, использующими Zookeeper, являются Yahoo, Twitter, Netflix и Facebook. Это всего лишь несколько имен.
Он отслеживает информацию, которую необходимо синхронизировать в вашем кластере. Такая информация, как:
- Какой узел является ведущим (master)?
- Какие работники (workers) будут выполнять какие задачи?
- Какие работники (workers) доступны на данный момент?
Это инструмент, который приложения могут использовать для восстановления после частичных сбоев в вашем кластере. Он также играет неотъемлемую роль в HBase, High-Availability (HA) MapReduce, Drill, Storm, Solr и многих других. Zookeeper сам по себе является распределенным приложением, предоставляющим средства автоматического написания кода.
Конкретные сервисы, которые предлагает Zookeeper, следующие:
- Служба имен: идентификация узлов по имени в DNS. Это похоже на DNS, за исключением узлов.
- Мониторинг конфигурации: текущие и актуальные сведения о конфигурации системы для присоединяющегося узла.
- Кластерный контроль: Подключение/уход узла в кластере и узла в режиме реального времени
- Выборы лидера: выбор узла в качестве ведущего
Зачем нам нужен Zookeeper?
Прежде чем понять, почему нам нужно использовать Zookeeper, давайте сначала разберемся со службой координации. Процесс интеграции служб связи в распределенную среду называется службой координации. Эти услуги сложно получить правильно. Они особенно уязвимы к таким ошибкам, как условия гонки и взаимоблокировки.
- Условия гонки: две или более системы пытаются выполнить одну и ту же задачу, которую должна выполнить одна система за заданное время.
- Взаимоблокировки: две или более операции, ожидающие друг друга в течение бесконечного времени.
Поэтому, чтобы упростить распространение услуг координации, был реализован Zookeeper. Чтобы мы могли освободиться от ответственности за внедрение услуги по координации с нуля.
Да, Zookeeper очень важен, поскольку Kafka не может работать без Zookeeper. Он используется для установления координации внутри кластера различных узлов. Одной из наиболее важных особенностей Kafka является то, что он использует Zookeeper для регулярной фиксации смещений, чтобы в случае сбоя узла он мог перезапуститься с ранее зафиксированного смещения (представьте, что вы позаботитесь обо всем этом самостоятельно).
Zookeeper также играет решающую роль в выполнении многих других функций, например, обнаружении лидеров, управлении конфигурациями, синхронизации, обнаружении входа или выхода нового узла в кластер и т. д.
Как Kafka использует Zookeeper?
Ниже приведены рекомендации по использованию Zookeeper в Kafka:
- Выбор лидера: поддержание отношений между лидером и последователем для всех разделов осуществляется контроллером, одним из брокеров. Если один узел выходит из строя, контроллер, который просит других последователей стать лидерами раздела для замены потерянного Zookeeper, выбирает только нового лидера, чтобы убедиться, что существует только один лидер.
- Членство в кластере: Какие брокеры и члены кластера живы? Zookeeper с этим справится.
- Конфигурация темы: сколько разделов имеет каждая тема, существуют ли темы или нет, и если существует, то где выбираются последователи, которые являются лидером.
- Квоты: какой объем данных будет читать и записывать каждый клиент
- ACL: у кого есть доступ на чтение и запись и к какой теме, сколько существует групп пользователей и их участников, а также информация о последнем смещении от каждой
Как Zookeeper работает в Kafka?
Zookeeper работает в двух режимах
1. Автономный
- Есть один сервер
- Для тестирования
- Нет высокой доступности
2. Реплицированный
- Запуск группы машин, называемой ансамблем
- Использует алгоритм Паксоса
- Высокая доступность
- Терпит до тех пор, пока большинство
Zookeeper Model
Модель данных Zookeeper соответствует пространству имен Иерархии, где каждый узел называется ZNode. Узел — это машина, работающая в кластере. В каждом ZNode есть информация. У него могут быть дети или нет.
Существует три формы Znodes.
- Постоянство (Persistence): такие Znode остаются в Zookeeper до тех пор, пока эта форма znode не будет жива, даже после того, как клиент сгенерировал конкретный znode. По умолчанию все узлы являются постоянными в Zookeeper, если не указано иное.
- Эфемерный (Ephemeral): этот узел будет удален, если сеанс, в котором был создан узел, будет завершен, подразумевая, что znode будет оставаться активным до тех пор, пока клиент не будет отключен.
- Последовательный (Sequential): создается узел с порядковым номером в имени; номер автоматический. Эти последовательные узлы могут быть либо постоянными, либо эфемерными.
Каждый Zookeeper информируется обо всех других Zookeeper в ансамбле; если сервер Zookeeper на всех машинах ансамбля включен, запускается Фаза 1 — выбор лидера.
Фаза 1: Выбор лидера (алгоритм Паксоса)
- Машина выбирает одного участника в качестве лидера, а других называют
- Эта фаза завершается, когда большинство синхронизирует свое состояние с
- Если лидер терпит неудачу, оставшиеся машины проводят выборы в течение
- Если большинство в любой момент времени недоступно, лидер уходит.
Заключение
Итак, мы можем заключить, что мы увидели, что такое Zookeeper, как он работает, его архитектуру и насколько Кафке необходимо с ним общаться.