Apache Kafka

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

Брокер (Broker)

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

Топик (Topic)

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

Партиция (Partition)

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

Фактор репликации (Replication Factor)

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

Zookeeper

В кластере Apache Kafka, ZooKeeper выполняет роль координатора, который управляет конфигурацией и состоянием кластера. Основные функции ZooKeeper включают:

  1. Управление конфигурацией: ZooKeeper хранит метаданные о брокерах, топиках и партициях, что позволяет Kafka динамически обновлять конфигурацию и перераспределять нагрузку.
  2. Обнаружение отказов: ZooKeeper отслеживает состояние брокеров и уведомляет остальные компоненты кластера о любых сбоях, что позволяет Kafka быстро реагировать на отказы и восстанавливать работу.
  3. Выбор лидера партиций: ZooKeeper помогает выбрать лидера для каждой партиции, что важно для обеспечения консистентности данных и отказоустойчивости.

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