Апач Кафка

Учебное пособие по Apache Kafka

Учебное пособие по Apache Kafka
В этом уроке мы увидим, как мы можем использовать Apache Kafka и в чем его смысл. Мы внимательно рассмотрим различные терминологии, связанные с этим, и тоже начнем с ними работать.

Апач Кафка

Для определения высокого уровня давайте представим краткое определение Apache Kafka:

Apache Kafka - это распределенный, отказоустойчивый, горизонтально масштабируемый журнал фиксации.

Это были высокоуровневые слова об Apache Kafka. Давайте разберемся с концепциями подробно здесь.

Тема в Apache Kafka похожа на очередь, в которой хранятся сообщения. Эти сообщения хранятся в течение настраиваемого количества времени, и сообщение не удаляется, пока не будет достигнуто это время, даже если оно было использовано всеми известными потребителями.

Kafka является масштабируемым, поскольку именно потребители фактически хранят то, какое сообщение было получено ими последним, в качестве значения «смещения». Давайте посмотрим на рисунок, чтобы лучше понять это:

Разделение тем и потребительское смещение в Apache Kafka

Начало работы с Apache Kafka

Чтобы начать использовать Apache Kafka, он должен быть установлен на машине. Для этого прочтите «Установка Apache Kafka на Ubuntu».

Убедитесь, что у вас активная установка Kafka, если вы хотите попробовать примеры, которые мы представим позже в уроке.

Как это работает?

С Кафкой Режиссер приложения публикуют Сообщения который прибывает в Кафку Узел а не напрямую потребителю. С этого узла Kafka сообщения потребляются Потребитель Приложения.

Kafka Производитель и Потребитель


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

Разделы тем


Опять же, Kafka Broker не ведет учет того, какой потребитель использовал, сколько пакетов данных. Это ответственность потребителей за отслеживание данных, которые он потребил.

Сохранение на диске

Kafka сохраняет записи сообщений, которые он получает от производителей, на диске и не хранит их в памяти. Может возникнуть вопрос, как это сделать возможным и быстрым? Это было обусловлено несколькими причинами, которые делают его оптимальным способом управления записями сообщений:

Распространение и репликация данных

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

Несмотря на то, что раздел реплицируется на несколько узлов, все же существует лидер раздела узел, через который приложения читают и записывают данные по теме, а лидер реплицирует данные на другие узлы, которые называются подписчики этого раздела.

Если данные записи сообщения очень важны для приложения, гарантия безопасности записи сообщения на одном из узлов может быть увеличена путем увеличения фактор репликации кластера.

Что такое Zookeeper?

Zookeeper - это распределенное хранилище ключей с высокой степенью отказоустойчивости. Apache Kafka в значительной степени зависит от Zookeeper для хранения механизмов кластера, таких как сердцебиение, распространение обновлений / конфигураций и т. Д.).

Это позволяет брокерам Kafka подписаться на себя и знать, когда произошли какие-либо изменения, касающиеся лидера раздела и распределения узлов.

Приложения производителя и потребителя напрямую взаимодействуют с Zookeeper приложение, чтобы узнать, какой узел является лидером раздела для темы, чтобы они могли выполнять чтение и запись от лидера раздела.

Потоковая передача

Потоковый процессор - это основной компонент в кластере Kafka, который принимает непрерывный поток данных записи сообщений из входных тем, обрабатывает эти данные и создает поток данных для выходных тем, которые могут быть любыми, от мусора до базы данных.

Вполне возможно выполнять простую обработку напрямую с использованием API производителя / потребителя, хотя для сложной обработки, такой как объединение потоков, Kafka предоставляет интегрированную библиотеку Streams API, но обратите внимание, что этот API предназначен для использования в нашей собственной кодовой базе, и это не так. я работаю на брокера. Он работает аналогично пользовательскому API и помогает нам масштабировать обработку потоковой информации по нескольким приложениям.

Когда использовать Apache Kafka?

Как мы изучали в предыдущих разделах, Apache Kafka можно использовать для работы с большим количеством записей сообщений, которые могут принадлежать практически бесконечному количеству тем в наших системах.

Apache Kafka - идеальный кандидат, когда дело доходит до использования службы, которая может позволить нам следовать архитектуре, управляемой событиями, в наших приложениях. Это связано с его возможностями сохранения данных, отказоустойчивой и высоко распределенной архитектуры, в которой критически важные приложения могут полагаться на его производительность.

Масштабируемая и распределенная архитектура Kafka делает интеграцию с микросервисами очень простой и позволяет приложению отделить себя от большого количества бизнес-логики.

Создание новой темы

Мы можем создать тестовую тему тестирование на сервере Apache Kafka с помощью следующей команды:

Создание темы

sudo kafka-themes.sh --create --zookeeper localhost: 2181 - коэффициент репликации 1
--разделы 1 - тематическое тестирование

Вот что мы получаем с помощью этой команды:

Создать новую тему Kafka


Будет создана тема тестирования, которую мы сможем подтвердить с помощью указанной команды:

Подтверждение создания темы Kafka

Написание сообщений по теме

Как мы изучили ранее, одним из API, присутствующих в Apache Kafka, является API производителя. Мы будем использовать этот API для создания нового сообщения и публикации в только что созданной теме:

Написание сообщения в теме

Судо Кафка-консоль-производитель.sh --broker-list localhost: 9092 --topic testing

Посмотрим, что выводит эта команда:

Опубликовать сообщение в теме Kafka


После того, как мы нажмем клавишу, мы увидим новый знак стрелки (>), который означает, что теперь мы можем вводить данные:

Ввод сообщения


Просто введите что-нибудь и нажмите, чтобы начать новую строку. Я набрал 3 строки текста:

Чтение сообщений из темы

Теперь, когда мы опубликовали сообщение в созданной нами теме Kafka, это сообщение будет там в течение некоторого настраиваемого времени. Мы можем прочитать это сейчас, используя Потребительский API:

Чтение сообщений из темы

Судо кафка-консоль-потребитель.sh --zookeeper localhost: 2181 --
тематическое тестирование - с самого начала

Вот что мы получаем с помощью этой команды:

Команда для чтения сообщения из темы Kafka


Мы сможем увидеть сообщения или строки, которые мы написали, используя API-интерфейс Producer, как показано ниже:

Если мы напишем еще одно новое сообщение с помощью Producer API, оно также будет мгновенно отображаться на стороне потребителя:

Публикация и потребление одновременно

Заключение

В этом уроке мы рассмотрели, как мы начинаем использовать Apache Kafka, который является отличным брокером сообщений и может также выступать в качестве специальной единицы сохранения данных.

Переназначьте кнопки мыши по-разному для разных программ с помощью X-Mouse Button Control
Может быть, вам нужен инструмент, который мог бы изменять управление вашей мышью с каждым приложением, которое вы используете. В этом случае вы можете...
Обзор беспроводной мыши Microsoft Sculpt Touch
Я недавно прочитал о Microsoft Sculpt Touch беспроводная мышь и решил ее купить. Побывав некоторое время, я решил поделиться своим опытом с ним. Эта б...
Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...