У меня есть следующий (общий, я полагаю) сценарий: главный узел, содержащий список элементов (URL-адреса, задания и т. Д.), Которые должны быть обработаны, и набор из N рабочих узлов.
Каждый рабочийизвлекает элемент из очереди, что-то делает, затем уведомляет главный узел об успешном завершении задания.
Рабочий может помещать новые элементы в главный узел, чтобы они были поставлены в очередь для обработки.
Требования довольно просты:
- ни одно задание не выполняется дважды
- ни одно задание не выбирается двумя узлами (т. Е. "Pop" является атомарным)
- если задание не выполняется, после фиксированного времени ожидания задание снова становится доступным для обработки
- число одновременно работающих рабочих потенциально велико
- несколько рабочих могут жить на одном узле
- мастер и рабочие не должны находиться в одной сети
- pop and pushдолжен быть представлен как REST API (т. е. очередь не зависит от языка)
- элементы должны постоянно храниться на главном узле (т. е. нет решений в памяти)
Я не могу найти простых и легких реализаций REST: я посмотрел на RabbitMQ , Celery , Google App Engine и кучудругих менее зрелых проектов, но все они кажутся довольно сложными в управлении,и немного похоже на излишество для того, что мне нужно.
Любое решение, которое я мог бы пропустить?