Что такое Apache Kafka?
Apache Kafka — это распределённая платформа потоковой передачи данных с открытым исходным кодом, разработанная для высокоскоростной обработки больших объёмов данных с минимальной задержкой.
Аналогия из жизни: Kafka — это как конвейерная лента на заводе. Производители кладут детали на ленту, а потребители забирают их в нужном темпе. Лента не останавливается, если один потребитель отстал, и позволяет нескольким участникам работать параллельно.
Преимущества
- Персистентность данных — сообщения хранятся на диске и доступны для повторного чтения
- Высокая производительность — миллионы сообщений в секунду с минимальной задержкой
- Независимость пайплайнов обработки — потребители работают независимо друг от друга
- Возможность replay — можно просмотреть историю записей заново
- Гибкость — подходит для разных сценариев: от логирования до event-driven архитектуры
Когда использовать
- Lambda-архитектура или Kappa-архитектура
- Стриминг больших данных
- Много клиентов (producer и consumer)
- Требуется кратное масштабирование
Чего в Kafka нет из коробки
- Это не классический брокер сообщений
- Нет отложенных сообщений
- Нет DLQ (Dead Letter Queue) как в RabbitMQ
- Нет поддержки AMQP / MQTT
- Нет TTL на отдельное сообщение
- Нет очередей с приоритетами
На собеседовании: интервьюер ожидает не просто определение, а понимание позиционирования Kafka. Частая ошибка — называть Kafka «брокером сообщений». Kafka — это платформа потоковой передачи данных, которая принципиально отличается от классических брокеров: сообщения не удаляются после прочтения, потребители сами управляют offset, и данные хранятся на диске.