我有以下(常见的,我猜)场景:一个主节点包含要处理的项目列表(url,jobs,whatever)以及一组N个worker节点。分布式REST队列的可用实现
每个工作人员从队列中弹出一个项目,执行一些操作,然后通知主节点作业已成功完成。
工作人员可能会将新项目推送到主节点,以便将这些项目排入队列进行处理。
的要求很简单:
- 没有工作得到后,在固定执行两次
- 没有工作得到由两个节点回升(即“流行”是原子。)
- 如果作业失败,超时工作是再次可用于处理
- 并行的工人数量是潜在的巨大
- 几名工人可以住在一个节点上
- 主人和工作人员不被假定在同一个网络中
- 弹出和推送必须作为REST API公开(例如,队列是语言无关的)
- 项目必须坚持主节点上存储(即没有内存解决方案)
我无法找到简单和轻量级REST实现:我有看着RabbitMQ,Celery,Google App Engine和一堆其他不太成熟的项目,但他们都似乎很复杂的管理,有点像我需要的矫枉过正。
任何我可能会忽略的解决方案?
如果你引入了能够优先考虑工作,那么候选人列表显示更像空...... –
嗨,你好吗?我处于类似的情况,如果你分享你的故事会很棒。 – ravi