Очереди сообщений и асинхронная обработка
очереди позволяют обрабатывать задачи вне HTTP-запроса и сглаживать пики нагрузки.
Почему это важно: Синхронная обработка медленных операций (email, изображения, отчёты) делает API медленным и хрупким.
Главная идея
HTTP-запрос быстро кладёт задачу в очередь; worker обрабатывает её асинхронно.
Как это выглядит на практике
- Пользователь загружает фото — API принимает файл и кладёт задачу в очередь.
- Запрос возвращает 202 Accepted за 50 мс вместо 5 секунд.
- Worker подхватывает задачу и делает resize, upload в S3, уведомление.
- При пике нагрузки очередь буферизует задачи, worker'ы обрабатывают в своём темпе.
Что происходит под капотом
- Брокеры очередей: RabbitMQ, Redis (Sidekiq, BullMQ), Kafka, SQS.
- At-least-once vs exactly-once delivery — разные гарантии доставки.
- Idempotency: задачи должны быть безопасны при повторной обработке.
- Dead letter queue: задачи, которые не удалось обработать после N попыток.
Типичные ошибки и заблуждения
- Ошибка: очередь = магический буфер. Если worker'ы медленнее продюсера, очередь будет расти бесконечно.
- Ошибка: exactly-once гарантия легко достигается. На практике это очень сложно.
- Ошибка: любые задачи подходят для очереди. Задачи, требующие немедленного ответа, нужно делать синхронно.
- Ошибка: Kafka — это очередь. Kafka — это лог, у него другая модель использования.
Ключевые выводы
- Очередь разделяет приём и обработку задач.
- Идемпотентность — must-have для асинхронных задач.
- Мониторьте длину очереди и время обработки.
- Dead letter queue спасает от потерянных задач.
Термины урока
Связь с работой backend-разработчика
Очереди — ключевой инструмент масштабирования backend'а. Всё, что не требует синхронного ответа, должно обрабатываться асинхронно.
Мини-разбор реальной ситуации
API отправки email тормозил на 3 секунды из-за SMTP. После переноса в Sidekiq время ответа упало до 20 мс, а письма всё равно уходили вовремя.
Что запомнить
- Асинхронность ≠ магия — нужны мониторинг и идемпотентность.
- Медленные операции = кандидаты для очереди.
- Dead letter queue = ваша страховка.
Итог
Очереди сообщений — это не только про масштабирование, но и про надёжность и стабильность системы.
Комментарии к уроку
Войдите, чтобы оставить комментарий.
Пока нет комментариев — будьте первым.