Из каких компонентов состоит кластер Apache Kafka?

«Из каких компонентов состоит кластер Apache Kafka?» — вопрос из категории Брокеры сообщений, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Кластер Apache Kafka состоит из следующих ключевых компонентов:

Основные компоненты:

  1. Брокеры (Brokers) — серверы, которые хранят данные, обрабатывают запросы на запись и чтение. Кластер содержит несколько брокеров для обеспечения отказоустойчивости и масштабируемости.
  2. Топики (Topics) — именованные логические потоки или категории, в которые публикуются сообщения (например, user-events, payment-logs).
  3. Партиции (Partitions) — физическое разделение топика. Каждый топик делится на одну или несколько партиций, которые распределяются по разным брокерам для параллельной обработки.
  4. Реплики (Replicas) — копии партиций, хранящиеся на других брокерах. Одна реплика является лидером (leader) для чтения/записи, остальные — последователями (followers) для резервирования.
  5. 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 копии (реплики) на разных брокерах для надежности.