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

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

Ответ

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

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

  1. Брокеры (Brokers) – Серверы, которые хранят данные, обрабатывают запросы на запись и чтение. Несколько брокеров образуют кластер.
  2. Топики (Topics) – Логические категории или именованные потоки, в которые публикуются сообщения (например, user-events, payment-logs).
  3. Партиции (Partitions) – Топики физически разделяются на партиции для обеспечения параллелизма, масштабируемости и отказоустойчивости. Каждая партиция хранится на одном брокере.
  4. Производители (Producers) – Клиентские приложения, которые публикуют (пишут) сообщения в топики Kafka.
  5. Потребители (Consumers) – Клиентские приложения, которые подписываются на топики и читают сообщения. Часто объединяются в Consumer Groups для распределения нагрузки.
  6. ZooKeeper / KRaft – Служба координации. В Kafka до версии 3.x использовался внешний Apache ZooKeeper для управления метаданными кластера. Начиная с Kafka 3.x, представлен встроенный консенсус-протокол KRaft, который устраняет зависимость от ZooKeeper.

Практический пример: Создание топика с 3 партициями и фактором репликации 2.

bin/kafka-topics.sh --create 
  --topic orders 
  --partitions 3 
  --replication-factor 2 
  --bootstrap-server localhost:9092