Доступные реализации распределенной очереди REST - PullRequest
2 голосов
/ 30 сентября 2011

У меня есть следующий (общий, я полагаю) сценарий: главный узел, содержащий список элементов (URL-адреса, задания и т. Д.), Которые должны быть обработаны, и набор из N рабочих узлов.

Каждый рабочийизвлекает элемент из очереди, что-то делает, затем уведомляет главный узел об успешном завершении задания.

Рабочий может помещать новые элементы в главный узел, чтобы они были поставлены в очередь для обработки.

Требования довольно просты:

  • ни одно задание не выполняется дважды
  • ни одно задание не выбирается двумя узлами (т. Е. "Pop" является атомарным)
  • если задание не выполняется, после фиксированного времени ожидания задание снова становится доступным для обработки
  • число одновременно работающих рабочих потенциально велико
  • несколько рабочих могут жить на одном узле
  • мастер и рабочие не должны находиться в одной сети
  • pop and pushдолжен быть представлен как REST API (т. е. очередь не зависит от языка)
  • элементы должны постоянно храниться на главном узле (т. е. нет решений в памяти)

Я не могу найти простых и легких реализаций REST: я посмотрел на RabbitMQ , Celery , Google App Engine и кучудругих менее зрелых проектов, но все они кажутся довольно сложными в управлении,и немного похоже на излишество для того, что мне нужно.

Любое решение, которое я мог бы пропустить?

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

Amazon SQS может быть тем, что вы хотите: http://aws.amazon.com/sqs/

Ян

1 голос
/ 01 октября 2011

Я прошел через тот же поиск. Я обнаружил, что сельдерей был близко (также смотрел на других как на октобота) - ни один не казался таким простым, как я хотел, и упускал несколько вещей. Я обнаружил, что сельдерей довольно прост, однако вводит разумное количество зависимостей, которых у меня еще не было в миксе, поэтому я выбрал что-то сделанное на заказ (на основе erlang)

...