Вопрос с собеседования · Брокеры сообщений

Когда стоит выбирать Kafka?

MiddleKafka: topic, partition, offsetKafka
Ещё спрашивают так:
  • Для каких задач подходит Kafka?
Коротко

Kafka — когда нужны журнал событий с хранением и перечитыванием, большая пропускная способность, много независимых потребителей одного потока и порядок по ключу.

  • Событийная интеграция микросервисов, CDC, поток в аналитику и хранилище
  • Сбор логов, метрик, кликов; потоковая обработка (Kafka Streams, Flink)
  • Event sourcing и восстановление состояния перечитыванием

А ещё Не лучший выбор для сложной маршрутизации, приоритетов и отложенных задач — там RabbitMQ или очереди

Подробно

Сильные стороны Kafka:

  • хранение и replay — события хранятся дни или бессрочно (compaction); новый потребитель может прочитать историю, упавший — перечитать после исправления бага;
  • пропускная способность — сотни тысяч и миллионы сообщений в секунду благодаря последовательной записи, page cache, пакетам и партициям;
  • много потребителей — каждая группа читает независимо и не мешает остальным;
  • порядок по ключу — все события сущности в одной партиции;
  • экосистема — Connect, Streams, Schema Registry, CDC через Debezium.

Типичные сценарии: шина событий между сервисами, CDC из базы в поиск и хранилище, сбор телеметрии и логов, потоковая аналитика, журнал для event sourcing.

Где хуже: очередь задач с подтверждением каждой и разной длительностью обработки (блокировка партиции медленным сообщением); сложная маршрутизация по правилам; приоритеты; отложенная доставка; маленькие объёмы, где Kafka — избыточная эксплуатационная нагрузка.

Что хотят услышать

  • Ключевые свойства: журнал, пропускная способность, независимые потребители.
  • Сценарии применения.
  • Где Kafka не лучший выбор.

Частые ошибки

  • Выбирать Kafka для простой очереди фоновых задач на сотню сообщений в минуту.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Нужен лог событий с высокой пропускной способностью, replay и независимыми группами
  • ✗Нужна классическая очередь задач с TTL, отложенной доставкой и маршрутизацией через DLX
  • ✗Когда требуется реляционная СУБД с ACID-транзакциями
  • ✗Когда нужен HTTP-балансировщик для микросервисов

Что спросят дальше

  • Чем Kafka отличается от RabbitMQ?
  • Что такое retention?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования