У меня есть M задач для обработки и N ресурсов параллельной обработки (например, рабочие потоки на экземплярах Heroko или EC2), где M >> N.
Я мог бы свернуть свою собственную систему, но, похоже, для этого уже есть отлаженный пакет или гем: что вы порекомендуете? (Теперь, когда я думаю об этом, я могу пытать Задержку :: Иов сделать это.)
Задачи могут быть написаны практически на любом языке - даже сценарий оболочки сделает эту работу. «Материнский корабль» - это Ruby On Rails с базой данных PostgreSQL. Основная идея заключается в том, что, когда ресурс готов обработать задачу, он запрашивает у материнской платы следующую необработанную задачу в очереди и начинает ее обрабатывать. Если работа не удалась, ее нужно повторить несколько раз, прежде чем сдаться. Результаты могут быть помещены в простые файлы или записаны в базу данных PostgreSQL.
(И, нет, это не для генерации спама. Я исследую степень распространения нескольких крупных социальных сетей.)