Ответ
Кластер Apache Kafka состоит из следующих ключевых компонентов:
Основные компоненты:
- Брокеры (Brokers) — серверы, которые хранят данные, обрабатывают запросы на запись и чтение. Кластер содержит несколько брокеров для обеспечения отказоустойчивости и масштабируемости.
- Топики (Topics) — именованные логические потоки или категории, в которые публикуются сообщения (например,
user-events,payment-logs). - Партиции (Partitions) — физическое разделение топика. Каждый топик делится на одну или несколько партиций, которые распределяются по разным брокерам для параллельной обработки.
- Реплики (Replicas) — копии партиций, хранящиеся на других брокерах. Одна реплика является лидером (leader) для чтения/записи, остальные — последователями (followers) для резервирования.
- ZooKeeper / KRaft — служба управления метаданными и координации. В версиях до Kafka 3.4 используется Apache ZooKeeper. Начиная с Kafka 3.4+, доступен новый встроенный консенсусный механизм KRaft (Kafka Raft), который устраняет зависимость от ZooKeeper.
Клиентские компоненты:
- Производители (Producers) — приложения, публикующие (produce) сообщения в топики.
- Потребители (Consumers) — приложения, подписывающиеся (consume) на топики и читающие сообщения. Потребители могут объединяться в группы (Consumer Groups) для распределения нагрузки по партициям.
Практический пример создания топика:
# Создание топика 'orders' с 3 партициями и коэффициентом репликации 2
bin/kafka-topics.sh --create
--topic orders
--partitions 3
--replication-factor 2
--bootstrap-server localhost:9092
В этом примере данные топика orders будут разделены на 3 партиции, и каждая партиция будет иметь 2 копии (реплики) на разных брокерах для надежности.