Поставьте долгие операции в очередь на Valkey (открытый форк Redis): приложение отвечает пользователю сразу, а обработку переносит в фон.
Пользователь не должен ждать, пока приложение закончит всю работу
Он нажимает «Сформировать отчёт» и ждёт, пока приложение соберёт данные. Проходят секунды или минуты, соединение может оборваться, а повторный клик запускает ту же задачу заново.
Готовый пресет Managed Service for Valkey позволяет отделить приём запроса от его обработки: поставить задачу в очередь, сразу продолжить пользовательский сценарий, а тяжёлую работу выполнить в фоне.
Примите задачу сейчас, обработайте позже
Приложение сохраняет сообщение в Valkey и подтверждает, что задача принята. Свободный обработчик забирает её из очереди и обрабатывает отдельно, не задерживая ответ пользователю.
Похожим способом можно поставить в очередь не только формирование отчётов, но и:
- отправку писем и уведомлений;
- генерацию документов;
- обработку изображений и видео;
- синхронизацию с внешними системами.
Превратите пик задач в очередь
Если одновременно поступят сотни задач, необязательно выполнять их все сразу.
Очередь принимает дополнительную нагрузку, а обработчики разбирают её в доступном темпе. Когда задач становится больше, можно добавить обработчики. Когда поток снижается, их можно сократить.
Приём пользовательских запросов при этом не зависит напрямую от числа выполняемых задач.
Что уже настроено
- основной хост и реплика в двух зонах доступности (при его отказе сервис автоматически переключит нагрузку на реплику);
- 4 vCPU и 32 ГБ RAM на каждом хосте;
- сетевой SSD объёмом 40 ГБ;
- политика NOEVICTION (при нехватке памяти Valkey не удаляет сохранённые задачи: новая запись завершается ошибкой, которую обрабатывает приложение);
- репликация, обновления и резервное копирование со стороны сервиса.
Что остаётся настроить вам
Логику очереди по-прежнему реализуете вы. Нужно определить:
- какую структуру данных использовать, например Lists или Streams;
- как подтверждать выполнение задач;
- как обрабатывать ошибки и повторные попытки;
- как защищаться от повторного выполнения одной задачи;
- сколько обработчиков требуется под вашу нагрузку.
Пресет даёт готовую инфраструктурную основу, а вы определяете поведение очереди.
👉Посмотреть пресет «Брокер сообщений»
Листая дальше, вы перейдёте на yandex.cloud