2012-05-23 4 views
0

У меня есть программа, которая занимает около 1 секунды для запуска и принимает файл в качестве входных данных и создает другой файл в качестве вывода. Проблема в том, что я должен обрабатывать около 30 файлов в секунду. Файлы для обработки будут доступны в виде очереди (реализованы поверх memcached) и не должны обрабатываться точно по порядку, поэтому в основном экземпляр программы проверяет файл для обработки и делает это. Я мог бы использовать диспетчер процессов, который автоматически запускает экземпляры программы, когда доступны системные ресурсы.Управление несколькими экземплярами процесса автоматически

На простом конце «системные ресурсы» будут просто означать «до двух процессов за раз», но если я перейду на другую машину, это может быть 2 или 10 или 100 или что-то еще. Я мог бы использовать утилиту, чтобы справиться с этим, по крайней мере. И в конце концов, я хотел бы открыть еще один процесс, когда процессор будет доступен, поскольку эти машины будут выделены. Время процессора кажется ограниченным ресурсом - программа не интенсивно связана с памятью.

Какой инструмент может выполнить такое управление процессом?

ответ

0

Шторм - не зная подробностей, я бы предложил Backtype Storm. Но это, вероятно, означало бы полное переписывание вашего текущего кода. :-)

Подробнее см. В Tutorial, но в основном он берет кортежи работы и распределяет их по топологии рабочих узлов. «Резьба» испускает работу в топологии, а «болт» - это шаг/задача на графике, где происходит некоторая часть работы. Когда затвор завершает работу, он испускает тот же/новый кортеж обратно в топологию. Болты могут работать параллельно или последовательно.

Смежные вопросы