2011-09-30 24 views
2

我有以下(常见的,我猜)场景:一个主节点包含要处理的项目列表(url,jobs,whatever)以及一组N个worker节点。分布式REST队列的可用实现

每个工作人员从队列中弹出一个项目,执行一些操作,然后通知主节点作业已成功完成。

工作人员可能会将新项目推送到主节点,以便将这些项目排入队列进行处理。

的要求很简单:

  • 没有工作得到后,在固定执行两次
  • 没有工作得到由两个节点回升(即“流行”是原子。)
  • 如果作业失败,超时工作是再次可用于处理
  • 并行的工人数量是潜在的巨大
  • 几名工人可以住在一个节点上
  • 主人和工作人员不被假定在同一个网络中
  • 弹出和推送必须作为REST API公开(例如,队列是语言无关的)
  • 项目必须坚持主节点上存储(即没有内存解决方案)

我无法找到简单和轻量级REST实现:我有看着RabbitMQ,Celery,Google App Engine和一堆其他不太成熟的项目,但他们都似乎很复杂的管理,有点像我需要的矫枉过正。

任何我可能会忽略的解决方案?

+1

如果你引入了能够优先考虑工作,那么候选人列表显示更像空...... –

+0

嗨,你好吗?我处于类似的情况,如果你分享你的故事会很棒。 – ravi

回答

1

我经历了相同的搜索去了。我发现芹菜很近(也像其他人一样) - 没有一种看起来像我想要的那么简单,并且错过了一些东西。我发现芹菜相当简单,但是引入了我在混合中没有的合理数量的依赖关系,所以我带着一些定制的东西(基于erlang)

+0

是否有任何机会开源? :) –

+0

不在这个阶段 –

2

亚马逊SQS可能是你想要什么:http://aws.amazon.com/sqs/

+0

谢谢,这是一个我不知道的好选择。我主要在寻找可以在我的机器上部署的东西。 –