【问题标题】:General-purpose distributed scheduling library for Java [closed]Java的通用分布式调度库[关闭]
【发布时间】:2012-05-24 01:19:54
【问题描述】:

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

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

Quartz 似乎很棒 - 但在将事件分派到节点时,它的性能如何尚不清楚。

还有其他选择吗?

【问题讨论】:

    标签: java distributed schedule


    【解决方案1】:

    听起来像是Akka 的用例。

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 分布式任务处理和一个节点宕机的情况如何?看起来没有开箱即用的解决方案。
    • @jdevelop Quatz 集群模式确实支持故障转移
    【解决方案3】:

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

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

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

    【讨论】:

    • 目前,可以将一项任务作为“作业”运行,但我看不到石英如何处理分布式任务管理和处理一个节点关闭的情况。而且它使用轮询,因此需要配置某种必须存储作业的数据库,这是潜在的瓶颈。我错过了什么吗?
    • 数据库确实是个瓶颈。对于分布式任务,您可以配置集群,但这有点受限
    【解决方案4】:

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

    例如以下功能可用:

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

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

    【讨论】:

    • 请阅读How to Answer,即使链接失效,答案也应该包含足够的信息。
    猜你喜欢
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 2011-03-19
    • 2010-11-30
    • 1970-01-01
    • 2013-02-15
    相关资源
    最近更新 更多