微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

开箱即用的分布式作业队列解决方案

如何解决开箱即用的分布式作业队列解决方案

是否有现成的作业队列框架?基本思路是

  1. 有人将具有工作状态 New 的工作排入队列
  2. (多个)工人得到一份工作并开始工作,将工作标记Taken。一项作业最多只能由一名工人运行
  3. 有东西会监控工作人员的状态,如果正在运行的作业超过预定义的超时,将重新排队,状态为 New,可能是工作人员的健康问题
  4. 工作线程完成任务后,会将任务标记为队列中的 Completed
  5. 有东西不断清理已完成的任务。或者在第 4 步,当工作人员完成一项任务时,工作人员只需将任务出列即可。

根据我的调查,Kafka (pub/sub) 或 MQ (push/pull & pub/sub) 或缓存 (Redis,Memcached) 之类的东西对于这项工作大多是足够的。但是,它们都需要围绕其核心功能进行某种开发,才能成为功能齐全的作业队列。

还研究了关系数据库,那些支持“SELECT * FOR UPDATE SKIP LOCKED”语法的也是一个不错的选择,这又需要数据库和工作线程之间的守护进程,这意味着额外的努力。

还研究了云解决方案、Azure 队列存储等类似评估。

所以我的问题是,是否有任何针对作业队列的开箱即用解决方案,这些解决方案专为一件事(作业队列)量身定制,无需太多设置?

谢谢

解决方法

看看 Python Celery。 https://docs.celeryproject.org/en/stable/getting-started/introduction.html

默认模式使用 RabbitMQ 作为消息代理,但也可以使用其他选项。如果需要,结果可以存储在数据库中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。