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

Чем Kafka Streams отличается от обычного Kafka Consumer?

SeniorЭкосистема KafkaKafka
Ещё спрашивают так:
  • Что такое Kafka Streams?
Коротко

Consumer API — низкоуровневое чтение: опрос, коммит, обработка вручную. Kafka Streams — библиотека потоковой обработки поверх Kafka: преобразования, агрегации, соединения потоков, окна, локальное состояние и exactly-once.

  • Состояние в локальных хранилищах (RocksDB) с резервированием в changelog-топиках
  • Масштабируется как группа: задачи по партициям
  • Не отдельный кластер — просто библиотека в вашем приложении

А ещё Альтернативы — Flink (отдельный кластер, богаче), ksqlDB (SQL поверх Streams)

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

Подробно

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, не связанные между собой
  • ✗Streams — отдельный кластер вместо Kafka
  • ✗Streams работает только с Avro, Consumer — только с JSON
  • ✓Kafka Streams — клиентская библиотека stream-processing поверх Consumer API: топология, state stores (RocksDB + changelog), windowing и exactly-once в рамках Kafka

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

  • Что такое state store?
  • Чем Kafka Streams отличается от Flink?

Разбор темы

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

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

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

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

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