Perl分布式作业队列

3
我需要设置一个作业队列,通过Web界面安排长时间运行的作业队列,然后在多个计算机上运行。我还需要能够删除和重新排序队列中的作业。
目前我们所有的代码都是用Perl编写的。我正在考虑使用类似ApacheMQ、Gearman、Resque等工具。
问题是,这些工具中的哪一个更适合此工作?还有其他软件解决方案可供选择吗?我最初计划只编写一个MySQL/Perl队列,但这很困难。我希望能找到一个带有良好Web界面并与Perl有接口的解决方案,一个纯MySQL/Perl的解决方案会是理想的。
谢谢。
1个回答

5
是的,写一个好的自己相当困难。从我的经验来看,以下是我可以告诉您的内容:
TheSchwartz在CPAN上是一个使用mysql作为后备存储的可靠的作业队列。
Gearman是一种不可靠但低延迟的队列,并具有不同的功能集。
这两个都没有Web界面,但它们有很好的命令行接口,以查看正在处理什么以及队列的状态。
您可以使用MQ消息队列作为解决方案,但这些是消息传递队列,与作业管理不完全相同,您将不得不自己处理调度、重试和失败等事项。
我已经看到过两个项目中通过STOMP通过Perl访问ActiveMQ并尝试失败。
RabbitMQ非常稳定(使用go和Erlang!),并且非常有效。
这两个都有很好的Web界面用于消息队列部分。

谢谢。在查看TheSchwartz的CPAN文档时,我找不到重新排序作业的方法。此外,看起来这些作业是以随机顺序被拉取的?(每个作业可能需要30分钟才能运行,所以用户不会满意随机顺序)。而且,我不确定是否可以同时运行多个作业。此外,我需要基于数据库的记分卡系统,因为作业将在不同的机器上运行,并且我需要一个状态页面。我可以处理调度部分的事情。我真正需要的是add_job和get_job方法,以及reorder_jobs、get_status、list_all_jobs方法。 - Smartelf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接