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

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

Для чего используется Apache Kafka?

  • Обмен сообщениями
  • Отслеживание активности на сайте
  • Метрики
  • Агрегация журналов
  • Потоковая обработка
  • Поиск событий
  • Журнал фиксации

Архитектура кластера Apache Kafka

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

Несколько компонентов содержат базовую архитектуру кластера Kafka:

  • Зооохранитель

Сведения о Клиентах-потребителях и информация о кластерах Kafka хранятся в ZooKeeper. Он действует как главный узел управления, где он отвечает за управление и обслуживание брокеров, тем и разделов кластеров Kafka.

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

Затем он уведомляет производителя или потребителей очередей Kafka о состоянии кластеров Kafka. Это облегчает координацию работы с активными Брокерами как для Производителей, так и для Потребителей.

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

  • Темы

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

Тема может иметь ноль или более потребителей, а также может иметь ноль или более производителей.

  • Разделы

В Kafka темы разделены на настраиваемое количество разделов, называемых Partitions. Разделы Kafka позволяют нескольким пользователям одновременно читать данные из одного и того же субъекта.

  • Репликация темы

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

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

  • Смещения

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

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

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

  • Потребители

Потребители — это приложения или машины, которые подписываются на темы и обрабатывают опубликованные каналы сообщений. Иногда называемые «подписчиками» или «читателями», потребители читают сообщения в том порядке, в котором они были созданы.

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

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

  • Брокеры

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

Заключение:

В этом руководстве по Kafka мы рассмотрели некоторые компоненты, варианты использования и архитектуру Kafka.

Спасибо за прочтение.

рисунки принадлежат мне :)

Рекомендации