Получить доступ

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

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

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

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

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

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

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

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

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

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

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

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

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

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

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

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

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

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

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

Разбор темы

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

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем