Апач Кафка

Что такое Apache Kafka и как это работает?

Что такое Apache Kafka и как это работает?

В этом уроке мы увидим, что такое Apache Kafka и как он работает, а также некоторые наиболее распространенные варианты использования.  Apache Kafka изначально был разработан в LinkedIn в 2010 году, а в 2012 году он стал проектом Apache верхнего уровня. Он состоит из трех основных компонентов:

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

Концепции Apache Kafka

Прежде чем копать глубже, нам нужно тщательно изучить некоторые концепции Apache Kafka. Вот термины, которые мы должны знать очень кратко:

Разделы тем

Концепция темы, разделов по темам и смещения также может быть прояснена с помощью иллюстративного рисунка:

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

Apache Kafka как система обмена сообщениями "публикация-подписка"

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

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

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

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

Монтаж

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

Пример использования: отслеживание использования веб-сайта

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

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

  1. Пользователь регистрируется на сайте и входит в личный кабинет. Пользователь пытается сразу получить доступ к функции, взаимодействуя с кнопкой.
  2. Веб-приложение создает сообщение с этими метаданными для раздела темы «click».
  3. Сообщение добавляется в журнал фиксации, а смещение увеличивается
  4. Теперь потребитель может получить сообщение от Kafka Broker и показать использование веб-сайта в режиме реального времени и показать прошлые данные, если он сбрасывает свое смещение на возможное прошлое значение

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

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

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

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

Использование Kafka в LinkedIn

Интересно отметить, что Apache Kafka ранее рассматривался и использовался как способ, с помощью которого конвейеры данных могли быть согласованы и через который данные были загружены в Hadoop. Kafka отлично работал, когда присутствовало несколько источников данных и мест назначения, и предоставление отдельного процесса конвейера для каждой комбинации источника и назначения было невозможно. Архитектор LinkedIn Kafka Джей Крепс хорошо описывает эту знакомую проблему в своем блоге:

Мое собственное участие в этом началось примерно в 2008 году после того, как мы отправили наше хранилище ключей. Мой следующий проект состоял в том, чтобы попытаться запустить работающую настройку Hadoop и перенести туда некоторые из наших рекомендательных процессов. Имея небольшой опыт в этой области, мы, естественно, выделили несколько недель на получение и отправку данных, а остальное время - на реализацию необычных алгоритмов прогнозирования. Так началась долгая утомительная работа.

Apache Kafka и Flume

Если вы перейдете к сравнению этих двух на основе их функций, вы найдете много общих черт. Вот некоторые из них:

Заключение

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

Игры HD Remastered для Linux, ранее не выпускавшиеся для Linux
Многие разработчики и издатели игр придумывают HD-ремастеры старых игр, чтобы продлить жизнь франшизы, порадовать фанатов, требующих совместимости с с...
Как использовать AutoKey для автоматизации игр под Linux
AutoKey - это утилита автоматизации рабочего стола для Linux и X11, запрограммированная на Python 3, GTK и Qt. Используя его функции сценариев и MACRO...
Как показать счетчик FPS в играх для Linux
Игры для Linux получили серьезный толчок, когда Valve объявила о поддержке Linux для клиента Steam и своих игр в 2012 году. С тех пор многие игры AAA ...