Где Kafka в карте инструментов данных

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

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

Зачем это нужно

Новичок часто спрашивает: «Kafka заменяет базу? А Airflow? А RabbitMQ?» Ответ почти всегда «нет, они про разное». Понимание границ экономит месяцы метаний и неверных решений.

Слои стека данных

  [ Источники ]  приложения, БД, датчики, логи
        |
        v
  [ ТРАНСПОРТ + ЛОГ ]  =  KAFKA
        |
        +--- [ Стрим-процессор ]  Kafka Streams, Flink
        |
        +--- [ Коннекторы ]  Kafka Connect (в БД, в S3)
        |
        v
  [ Хранилища ]  ClickHouse, Postgres, поиск, data lake
        |
        v
  [ Оркестрация батчей ]  Airflow поверх хранилищ

Кто что делает

ИнструментРольKafka — это…
Airflowоркестратор батч-задач по расписаниюне оркестратор; поток в реальном времени
PostgreSQL / ClickHouseхранилище для запросовне БД для произвольных запросов; лог-журнал
RabbitMQочередь задач, сообщение исчезаетлог: события хранятся, читаются многократно
Redisбыстрый кэш / структуры в памятине кэш; долговременный поток на диске
Flink / Kafka Streamsвычисления над потокомтранспорт, на котором они работают

Чем Kafka не является

Kafka не база данных в привычном смысле: вы не делаете SELECT ... WHERE по произвольному полю — данные лежат как упорядоченный журнал, читаемый по порядку с позиции. Kafka не классическая очередь: сообщение не удаляется после прочтения, его читают сколько угодно потребителей и сколько угодно раз. Kafka не процессор: сама она не считает агрегаты — для этого есть Streams и Flink поверх неё. Её работа — надёжно принять поток событий, упорядочить, сохранить и отдать всем желающим.

Как работает под капотом

Связка обычно такая: приложения и базы публикуют события в Kafka (напрямую или через Connect/CDC); стрим-процессоры читают, обогащают и считают на лету; результаты Connect выгружает в хранилища (ClickHouse, S3, поиск); поверх хранилищ Airflow гоняет тяжёлые батч-отчёты. Kafka — позвоночник, к которому всё подключается. Именно потому, что она хранит лог, а не просто пересылает, любой новый потребитель может подключиться и прочитать историю заново — это и делает её центром интеграции.

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

  • Использовать Kafka как основную БД для запросов. Для произвольных выборок нужны индексы и хранилище — выгружайте из Kafka в БД.
  • Ставить Kafka вместо Airflow. Это ортогональные вещи: поток событий vs оркестрация шагов.
  • Ждать от Kafka вычислений. Агрегации — задача Streams/Flink, не брокера.

Итоги

  • Kafka — слой транспорта и хранения потока, а не БД, не очередь-в-классике и не процессор.
  • Airflow оркеструет батчи, БД хранят для запросов, Streams/Flink считают — Kafka их связывает.
  • Хранимый лог делает Kafka центром интеграции: новый потребитель читает историю заново.
Проверьте себя
1. Чем Kafka отличается от RabbitMQ концептуально?
AKafka быстрее в 100 раз всегда
BВ Kafka события хранятся в логе и читаются многократно, в очереди сообщение исчезает после прочтения
CRabbitMQ не умеет доставлять сообщения
DЭто одно и то же
2. Заменяет ли Kafka Airflow?
AДа, полностью
BНет: Airflow оркеструет батч-задачи, Kafka переносит поток событий — это разные слои
CДа, если включить плагин
DAirflow — часть Kafka
3. Кто считает агрегации над потоком?
AСам брокер Kafka
BСтрим-процессоры (Kafka Streams, Flink) поверх Kafka
CТолько Airflow
DRedis