Когда стоит выбирать Kafka?
- Для каких задач подходит 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?
Разбор темы
- Kafka: topic, partition, offset
Распределённый append-only лог, партиция как единица масштаба и упорядоченности, ключ и порядок, retention и log compaction, replay.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.