分布式REST队列的可用实现

时间:2011-09-30 15:20:40

标签: http rest queue distributed distributed-computing

我有以下(常见的,我猜)场景:主节点包含要处理的项目列表(URL,作业等)和一组N个工作节点。

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

工作人员可以将新项目推送到主节点,以便将这些项目排队等待处理。

要求非常简单:

  • 没有工作被执行两次
  • 两个节点没有选择任何作业(即“pop”是原子的)
  • 如果作业失败,则在固定超时后,该作业将再次可用于处理
  • 并发工人的数量可能很大
  • 几个工作人员可能住在一个节点上
  • 不假设主人和工人在同一个网络中
  • pop和push必须作为REST API公开(即队列与语言无关)
  • 项必须永久存储在主节点上(即没有内存中的解决方案)

我无法找到简单和轻量级REST实现:我查看了RabbitMQCeleryGoogle App Engine以及其他一些不太成熟的内容项目,但所有这些项目看起来都很复杂,而且有点像我需要的东西。

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

2 个答案:

答案 0 :(得分:2)

Amazon SQS可能是您想要的:http://aws.amazon.com/sqs/

答案 1 :(得分:1)

我经历了同样的搜索。我发现芹菜很接近(也看过像octobot这样的其他人) - 没有一个像我想要的那样简单,并且缺少一些东西。我发现芹菜相当简单,但是引入了一些合理数量的依赖,我在混合中没有,所以我选择了定制的东西(基于erlang)