Где 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 центром интеграции: новый потребитель читает историю заново.