Apache Kafka
Apache Kafka — это распределенная платформа потоковой обработки, которая позволяет обрабатывать и передавать потоки данных в реальном времени с высокой пропускной способностью и низкой задержкой. Она используется для сбора, хранения и обработки сообщений, а также для обеспечения надежной передачи данных между различными системами и приложениями.
Брокер (Broker)
Брокер — это отдельный сервер в кластере Kafka, который отвечает за хранение сообщений, их обработку и передачу. Брокеры работают совместно, образуя распределенную систему, которая обеспечивает высокую доступность и отказоустойчивость.
Топик (Topic)
Топик Topic — это логический канал, по которому передаются сообщения в Kafka. Каждый топик имеет уникальное имя и может содержать множество сообщений. Топики используются для разделения потоков данных на логические категории, что упрощает их обработку и управление.
Партиция (Partition)
Партиция — это часть топика, которая распределяется по брокерам. Каждый топик может состоять из одной или нескольких партиций, что позволяет распределить нагрузку и обеспечить параллельную обработку сообщений. Партиции обеспечивают горизонтальное масштабирование и улучшают производительность системы.
Фактор репликации (Replication Factor)
Фактор репликации — это количество копий партиции, которые создаются и хранятся в кластере. Например, если фактор репликации равен 3, то каждая партиция будет иметь три копии, распределенные по разным брокерам. Фактор репликации определяет уровень отказоустойчивости и надежности данных: чем выше фактор репликации, тем больше брокеров могут выйти из строя без потери данных, но при этом увеличивается нагрузка на кластер.
Zookeeper
В кластере Apache Kafka, ZooKeeper выполняет роль координатора, который управляет конфигурацией и состоянием кластера. Основные функции ZooKeeper включают:
- Управление конфигурацией: ZooKeeper хранит метаданные о брокерах, топиках и партициях, что позволяет Kafka динамически обновлять конфигурацию и перераспределять нагрузку.
- Обнаружение отказов: ZooKeeper отслеживает состояние брокеров и уведомляет остальные компоненты кластера о любых сбоях, что позволяет Kafka быстро реагировать на отказы и восстанавливать работу.
- Выбор лидера партиций: ZooKeeper помогает выбрать лидера для каждой партиции, что важно для обеспечения консистентности данных и отказоустойчивости.
В более новых версиях Kafka (начиная с версии 2.8) появилась возможность работы без ZooKeeper, используя собственный механизм управления состоянием кластера, называемый KRaft. Однако, в большинстве существующих установок Kafka по-прежнему используется ZooKeeper для управления кластером.