Краткое введение в современную платформу потоковой передачи событий и различные компоненты, из которых состоит Kafka.

Однострочник в документации Apache Kafka, который в двух словах объясняет, что такое Apache Kafka.,

Apache Kafka® — это платформа для потоковой передачи событий.

В этом однострочном тексте есть две части. Мероприятие и потоковая платформа для мероприятия.

Так что же такое событие?
Это просто изменение состояния чего-либо.
Допустим, вы бронируете еду онлайн.
Вы подтвердили свой заказ. Это событие.
Теперь ваш платеж прошел успешно. Это событие.
Если ваша еда доставлена ​​к вам, это тоже событие.

Во-вторых, потоковая платформа — это та платформа, которая принимает непрерывный поток событий, обрабатывает их и интерпретирует, чтобы придать какой-то смысл конечному потребителю.

Возьмем простую аналогию с газетой. Газета представляет собой сборник всех событий, произошедших в мире, собранных людьми из разных мест, интерпретированных и обработанных в удобном для пользователя формате. В некотором смысле, это косвенный предок Кафки.

Но Кафка не только это. Это гораздо больше, чем просто набор событий и их обработка. Вот почему это одна из самых популярных платформ потоковой передачи событий, используемая различными гигантами отрасли, включая NETFLIX, PayPal, Spotify, Twitter и Airbnb.

Преимущества использования систем обмена сообщениями и потоковой передачи на основе Kafka

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

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

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

Мы также достигаем высокой гибкости и надежности благодаря политикам хранения и параметрам репликации, предоставляемым Kafka.

Давайте углубимся в различные части, из которых состоит Кафка.

Рекорды

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

Производители

Это клиенты для сервера Kafka. Они производят события и проталкивают их в Кафку. Производители подобны различным источникам, которые предоставляют информацию газетной организации. Эти источники предоставляют информацию по этому конкретному соответствующему разделу. Точно так же производители всегда создают мероприятия на одну и ту же тему. Но что такое тема?

Темы

Темы являются основополагающими элементами рабочего процесса Kafka. Рассматривайте их как разные разделы в газете. Информация, относящаяся к разделу, собирается вместе и представляется в этом разделе. Аналогичным образом все события, создаваемые производителем, имеют тему, которая будет поддерживаться вместе под этим именем темы. Тогда кто будет использовать эту информацию?

Потребители

Потребители — это другой набор клиентов для сервера Kafka. Потребители похожи на читателей газет. Читатели газеты или журнала подписаны на эту тему/раздел и потребляют всю информацию, доступную как ее часть. Точно так же потребители продолжают опрашивать новые события по интересующей их теме. Как мы можем гарантировать, что данные предоставляются большому количеству потребителей без каких-либо сбоев или потерь?

Брокеры

Брокеры — сердце архитектуры Кафки. Каждому брокеру назначается тема, и они хранят все события, которые публикуются в этой теме. Чтобы гарантировать отсутствие потери данных и избежать единой точки отказа, мы реплицируем данные с использованием коэффициента репликации при настройке брокера. И в большинстве случаев всегда есть кластер, который поддерживает несколько брокеров, прослушивающих темы для этой цели. Эти брокеры — не что иное, как сама газетная организация, которая собирает информацию от производителей и публикует ее для потребителей.

Фактор репликации

Коэффициент репликации используется для обозначения количества репликаций части информации, которая будет храниться в файловой системе брокера. В случае сбоя или выхода из строя определенного брокера другой брокер в этом кластере, имеющий реплицированные данные, выйдет вперед и передаст требуемый фрагмент данных о событии потребителю. Это как функция резервного копирования. Но сохраняем ли мы эти данные навсегда?

Политика удержания

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

Разделы и смещения

Когда потребитель отключается на некоторое время и возвращается, как он узнает, с чего начать чтение данных? Смещения используются, чтобы убедиться, что порядок гарантируется, когда клиенты считывают данные о событиях от брокеров. И разделы используются для разделения хранилища данных о событиях темы на разные сегменты между брокерами, чтобы обеспечить масштабируемость и надежность. Смещения — это индексы, представленные как 0,1,2 и т. д. на диаграмме выше.

Работник зоопарка

Вдобавок ко всему этому, один главный лидер всего — смотритель зоопарка. Потому что довольно сложно обеспечить, чтобы все эти единицы в архитектуре Kafka хорошо работали вместе в оркестровке. А Zookeeper следит за тем, чтобы в настройке Kafka все было в порядке. Он получает пульс от брокеров через определенные промежутки времени, чтобы убедиться, что все идет гладко.

Минусы Apache Кафка

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

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

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

Заключение

Apache Kafka — очень популярный фреймворк, используемый несколькими гигантами индустрии. Есть много причин использовать Kafka в вашем проекте, и самая важная из них — Kafka — это асинхронная модель, основанная на Pub-Sub, управляемая событиями. И, прежде чем включить Kafka в свой проект, обратите внимание на то, что Kafka очень эффективна, когда через систему проходит много событий. Для относительно небольших проектов Kafka является излишним.

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

Пожалуйста, поделитесь своими мыслями/отзывами об этой статье. Спасибо, что прочитали это!

Сделаем программирование веселым вместе!

Присоединяйтесь к FAUN: Сайт💻|Подкаст🎙️|Twitter🐦|Facebook👥 |Instagram📷|Группа Facebook🗣️|Группа Linkedin💬| Slack 📱|Cloud Native Новости📰|Дополнительно.

Если этот пост был полезен, пожалуйста, несколько раз нажмите кнопку аплодисментов 👏 ниже, чтобы выразить свою поддержку автору 👇