До миграции «АналитикПро» жил на RabbitMQ для очередей и Redis Streams для real-time подсчётов. При 200 млн событий в день эта схема работала, но рост до 1 млрд быстро обнажил проблемы:
| Критерий | RabbitMQ | Redis Streams | Kafka |
|---|---|---|---|
| Пропускная способность | 50K msg/s | 200K msg/s | 2M+ msg/s |
| Хранение данных | Только до ACK | Ограничено RAM | Диск, недели/месяцы |
| Replay событий | Нет | Ограниченно | Полный replay |
| Consumer groups | Ограниченно | Да | Да, масштабируемо |
| Exactly-once | Нет | Нет | Да (с транзакциями) |
| Stream processing | Нет | Базовый | Kafka Streams / ksqlDB |
Для нас ключевым аргументом стала возможность replay. В аналитике постоянно возникают ситуации, когда нам нужно пересчитывать агрегации за прошлые периоды: например, мы добавили новую метрику, нашли какой-то баг или изменили логику атрибуции. С RabbitMQ данные после обработки просто теряются, а вот Kafka хранит все сырые события ровно столько времени, сколько мы ей зададим — в нашем случае это 30 дней.

Оставить комментарий