Как я должен обрабатывать несколько запросов, которые отнимают много времени и ресурсов?

#docker #rest #parallel-processing #resources #cpu-usage

#докер #остальное #параллельная обработка #Ресурсы #загрузка процессора

Вопрос:

Это может показаться вам таким глупым, но это всего лишь пример того, что я пытаюсь сделать. Поэтому я хочу создать rest api, который может запускать скрипт докера. это может выглядеть примерно так

HTTP-СООБЩЕНИЕ : /api/v1/сервер -gt; скрипт : запуск докера sudo {имя изображения}

Таким образом, все работает нормально до тех пор, пока пользователь не захочет создать несколько контейнеров одновременно. У меня нет никакого опыта в том, как с этим справиться. Моя идея состоит в том, чтобы сделать асинхронный запрос api и заставить его запускать сценарий параллельно (для создания экземпляра каждого контейнера требуется около 1-2 минут, допустим, пользователь хочет создать 20 серверов, поэтому для его последовательного запуска потребуется 20*2 минуты), Но сервер имеет ограниченные ресурсы (процессор, потоки, ядро и т. Д.), Поэтому это может повлиять на другие запросы api и сделать его таким медленным. Итак, какова наилучшая практика для решения этой проблемы или как я могу рассчитать или приблизить минимальные ресурсы для создания 1 экземпляра.

Комментарии:

1. Обычно вы хотите избежать динамического запуска контейнеров; также учитывайте , что ваш HTTP-сервер может sudo что-то еще docker run или очень легко использовать docker run для корневого хоста. Можете ли вы настроить очередь заданий, используя систему, подобную RabbitMQ, с длительным рабочим процессом (или несколькими), и отправлять задания в эту очередь? Если задания занимают несколько минут, вам также придется изменить интерфейс HTTP, чтобы учесть это.