поэтому не могли бы вы привести меня к наилучшему оптимизированному способу решения / реализации вышеуказанного сценария.
Я думаю, что вы уже наметили наиболее оптимизированный способ его решения с учетом вашей проблемы.,Если ваше ограничение состоит в том, чтобы минимизировать задержку HTTP-запроса, то работа должна быть выгружена:
Чтобы смоделировать это, какая-то очередьобычно используется:
Таким образом, HTTP публикует запрос архива и немедленно возвращает его клиенту, а затем асинхронно читает архиватор из очереди:
Использование очереди имеет много преимуществ:
- Отсоединяет HTTP от архиватора
- Открывает понтон для долговечности
- Поддерживает обратнодавление
- Поддержка горизонтального масштабирования вне архиваторов
- Поддержка архиваторов на другом оборудовании, отличном от HTTP
Я думаю, что реализация очереди в значительной степени зависит от вашегонефункциональные требования:
- Должны ли запросы архива быть надежными?
- Вам нужна балансировка нагрузки?архивных заданий?
Даже если вам нужно пройти с очередями Laravel, есть несколько вопросов относительно долговечности, на которые нужно ответить.Т.е. если бы вы использовали Redis и Larevel Queue, как вы справляетесь с долговечностью?Можно ли потерять запрос архива?Вам нужно fsync при каждой записи в redis (постоянство AOF?) Можно ли терять записи?