9

我正在寻找一些用于安排大量任务的通用库。该库必须提供跨集群节点拆分任务、执行负载平衡和容错的能力——因此,如果某个节点出现故障,则该节点的任务必须分布在其余节点上。

我查看了 Hadoop——但看起来它适用于 map-reduce 任务。在我的情况下,任务只是通知的发送者、对象状态的检查器等。

Quartz 似乎很棒——但是当涉及到向节点分派事件时,它到底有多好还不清楚。

还有其他选择吗?

4

4 回答 4

7

听起来像是Akka的一个用例。

于 2012-05-16T13:09:52.497 回答
3

我同意 Christian 的观点,Akka 似乎更合适。Quartz 非常适合它的功能,但它的基本构建块是应该执行的作业。它不会帮助您将工作分解为可分发的组件。

如果你所有的任务都可以分解成作业,那么 Quartz 可以帮你安排它们,这是它最擅长的。但是如果一个工作需要分解成子任务,那么你就需要使用另一个框架。

另一种选择可能是spring batch,这取决于您的需要。

于 2012-05-16T13:26:09.910 回答
1

您可以尝试ProActive,这是一个与 Java(用 Java 编写)很好地集成的工作流调度程序。它支持您列出的功能。它是一个开源项目,属于 OW2 的一部分。

例如,以下功能可用:

  • 工作流,即具有依赖关系和结构的任务集,例如循环/if/replication
  • 任务在节点上执行,即在不同机器上运行的代理
  • 节点故障时可以自动重启任务

[免责声明] 我是 Activeeon 的一员,该公司为 ProActive 提供专业支持[/disclaimer]

于 2014-09-08T16:05:28.887 回答
0

或者你也可以试试Quartz,它几乎可以处理你想要的任何事情:)

于 2012-05-16T13:15:52.977 回答