Из каких ключевых компонентов (модулей) состоит Apache Kafka?

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

Ответ

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

Компонент Назначение Пример/Ключевая концепция
Producer Публикует (производит) сообщения в топики Kafka. producer.send(new ProducerRecord<>("orders", orderId, orderData));
Consumer Читает (потребляет) сообщения из топиков. ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
Broker Сервер Kafka, который хранит данные, обрабатывает запросы и обеспечивает репликацию. Кластер состоит из нескольких брокеров для отказоустойчивости.
Topic Логический именованный канал для сообщений (например, user-logs, payment-events). Сообщения публикуются в топик и читаются из него.
Partition Часть топика для горизонтального масштабирования и параллельной обработки. Каждый партишн упорядочен, но порядок между партишнами не гарантирован.
ZooKeeper/KRaft ZooKeeper (до версии 2.8): управлял метаданными кластера. KRaft: новый встроенный механизм консенсуса (Raft), заменяющий ZooKeeper. Управление контроллерами, метаданными топиков и партишнов.
Kafka Connect Фреймворк для потоковой интеграции с внешними системами (БД, облачные хранилища). Готовые коннекторы для MySQL, Elasticsearch, S3 и др.
Kafka Streams Библиотека для обработки потоков данных в реальном времени (stream processing).

KStream<String, String> stream = builder.stream("input-topic");
stream.filter((key, value) -> value.length() > 5)
      .to("output-topic");
``` |

**Взаимодействие:** Producers → (Topics/Partitions on Brokers) → Consumers. Connect и Streams API строятся поверх этой базовой модели.