我正在寻找一些用于安排大量任务的通用库。该库必须提供跨集群节点拆分任务、执行负载平衡和容错的能力——因此,如果某个节点出现故障,则该节点的任务必须分布在其余节点上。
我查看了 Hadoop——但看起来它适用于 map-reduce 任务。在我的情况下,任务只是通知的发送者、对象状态的检查器等。
Quartz 似乎很棒——但是当涉及到向节点分派事件时,它到底有多好还不清楚。
还有其他选择吗?
我正在寻找一些用于安排大量任务的通用库。该库必须提供跨集群节点拆分任务、执行负载平衡和容错的能力——因此,如果某个节点出现故障,则该节点的任务必须分布在其余节点上。
我查看了 Hadoop——但看起来它适用于 map-reduce 任务。在我的情况下,任务只是通知的发送者、对象状态的检查器等。
Quartz 似乎很棒——但是当涉及到向节点分派事件时,它到底有多好还不清楚。
还有其他选择吗?
听起来像是Akka的一个用例。
我同意 Christian 的观点,Akka 似乎更合适。Quartz 非常适合它的功能,但它的基本构建块是应该执行的作业。它不会帮助您将工作分解为可分发的组件。
如果你所有的任务都可以分解成作业,那么 Quartz 可以帮你安排它们,这是它最擅长的。但是如果一个工作需要分解成子任务,那么你就需要使用另一个框架。
另一种选择可能是spring batch,这取决于您的需要。
您可以尝试ProActive,这是一个与 Java(用 Java 编写)很好地集成的工作流调度程序。它支持您列出的功能。它是一个开源项目,属于 OW2 的一部分。
例如,以下功能可用:
[免责声明] 我是 Activeeon 的一员,该公司为 ProActive 提供专业支持[/disclaimer]
或者你也可以试试Quartz,它几乎可以处理你想要的任何事情:)