Мы предполагаем, что приложение получает запросы для работы на ограниченном количестве ресурсов, которые поддерживают только одну операцию за раз.Пример:
/GET do_stuff?resource=A&other_params
/GET do_stuff?resource=B&other_params
Идея состоит в том, что операция из ресурса A должна быть помещена в процесс A, а запрос для B - в процесс B. Если любой другой запрос получен для ресурса A, он должен быть вочередь в процессе А. Вид гарантии синхронного режима работы для каждого ресурса.
Этого можно добиться с помощью Rabbit MQ или других подобных подходов, или даже с дискретным программированием вне phusion, но в моем случае было бы интересно и практично иметь способ сделать это прямо из конфигурации приложения или любого другогодругая идея.
Чтобы было немного понятнее, переменная ресурса может иметь примерно 500 значений, поэтому жесткое программирование или использование параметра имени группы приложений не подходит.
Сама логика должна выглядеть следующим образом:
incoming request
if there is a process that is running a request for the resource
put request into process queue
else
spawn or use free process
Количество процессов не должно быть таким высоким в один момент, так как запросы будут поступать почти случайно.