Чем Kafka Streams отличается от обычного Kafka Consumer?
- Что такое Kafka Streams?
Consumer API — низкоуровневое чтение: опрос, коммит, обработка вручную. Kafka Streams — библиотека потоковой обработки поверх Kafka: преобразования, агрегации, соединения потоков, окна, локальное состояние и exactly-once.
- Состояние в локальных хранилищах (RocksDB) с резервированием в changelog-топиках
- Масштабируется как группа: задачи по партициям
- Не отдельный кластер — просто библиотека в вашем приложении
А ещё Альтернативы — Flink (отдельный кластер, богаче), ksqlDB (SQL поверх Streams)
Подробно
Consumer API: приложение само крутит цикл poll(), обрабатывает записи, коммитит offset, хранит состояние где-то во внешней базе. Полный контроль, но агрегации, окна и соединения потоков приходится писать вручную.
Kafka Streams — Java-библиотека, которая строит обработку как топологию: stream.filter().groupByKey().windowedBy(...).count(). Возможности:
- без состояния — фильтрация, преобразование, ветвление;
- с состоянием — агрегаты, счётчики, соединения потоков и таблиц (KStream, KTable, GlobalKTable), окна по времени события;
- локальное состояние — RocksDB на диске экземпляра, каждое изменение дублируется в changelog-топик, поэтому при падении состояние восстанавливается;
- exactly-once —
processing.guarantee=exactly_once_v2; - масштабирование — задачи привязаны к партициям; запускаем больше экземпляров — задачи перераспределяются.
Когда что: простая реакция на событие (отправить письмо, записать в базу) — consumer или Spring Kafka. Агрегации, окна, обогащение потока — Kafka Streams. Очень сложные пайплайны, много источников и SQL — Flink.
Что хотят услышать
- Различие уровня абстракции.
- Возможности Streams: состояние, окна, соединения, exactly-once.
- Как хранится и восстанавливается состояние.
- Когда что выбирать.
Частые ошибки
- Считать Kafka Streams отдельным кластером, как Flink.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Это два разных протокола поверх TCP, не связанные между собой
- ✓Библиотека поверх Consumer API: топология, state stores, окна и exactly-once
- ✗Отдельный кластер обработки, который разворачивают рядом с Kafka вместо брокеров
- ✗Streams работает только с Avro, Consumer — только с JSON
Что спросят дальше
- Что такое state store?
- Чем Kafka Streams отличается от Flink?
Разбор темы
- Kafka API и экосистема
Клиентские API, Kafka Connect и Debezium, Streams и stream-processing, ksqlDB, Schema Registry и MirrorMaker для multi-DC.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.