В какую структуру Kafka записывает входящие сообщения?

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

Ответ

Сообщения в Kafka записываются в топики (topics).

  • Топик — это именованная категория или поток сообщений.
  • Каждый топик делится на одну или несколько партиций (partitions) для параллелизма.
  • Сообщения в партиции упорядочены и получают последовательный идентификатор — offset.

Ключевые моменты:

  • Производитель (Producer) указывает топик для отправки сообщения.
  • Сообщение записывается в одну из партиций топика (на основе ключа сообщения или round-robin).
  • Потребители (Consumers) читают сообщения из партиций, отслеживая свою позицию (offset).

Пример создания топика:

# Создание топика 'orders' с 3 партициями и фактором репликации 2
kafka-topics.sh --create 
  --topic orders 
  --partitions 3 
  --replication-factor 2 
  --bootstrap-server localhost:9092

Важно: Порядок сообщений гарантируется только в пределах одной партиции. Масштабирование чтения достигается за счет увеличения количества партиций и потребителей.