http - 分布式 REST 队列的可用实现

标签 http rest queue distributed distributed-computing

我有以下(我猜是常见的)场景:一个主节点保存要处理的项目列表(url、作业等),以及一组 N 个工作节点。

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

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

要求非常简单:

  • 没有作业会执行两次
  • 没有作业被两个节点选择(即“pop”是原子的)
  • 如果作业失败,在固定超时后,该作业将再次可供处理
  • 并发工作人员数量可能很大
  • 多个工作线程可能位于一个节点上
  • 假设 master 和worker 不在同一个网络中
  • 弹出和推送必须作为 REST API 公开(即队列与语言无关)
  • 项目必须持久存储在主节点上(即没有内存解决方案)

我无法找到简单和轻量级的REST实现:我已经查看了RabbitMQ , Celery , Google App Engine以及其他一些不太成熟的项目,但所有这些项目似乎管理起来都相当复杂,对于我所需要的东西来说有点大材小用。

有什么我可能会忽略的解决方案吗?

最佳答案

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

一月

关于http - 分布式 REST 队列的可用实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7612558/

相关文章:

java - Java中的无锁且大小受限的队列

c++ - 为什么 std::queue 在弹出元素后不收缩内存?

使用 void* 的 C 队列实现 - 好的还是坏的做法?

php - Httpful 帖子和 URL 参数

c# - 是否可以获取从 http 响应(包括 header )收到的总字节数?

http - 在golang中测试http.Pusher和推送功能

java - NodeJS 和 Java 创建 REST API

python - 修改 Python 代码以使用 SSL 进行 REST 调用

javascript - expectHEAD 已记录但未实现?

rest - 格式不正确的POST正文的HTTP状态代码