【问题标题】:Distributed failsafe jobqeues for JVMJVM 的分布式故障安全作业队列
【发布时间】:2013-01-21 15:16:54
【问题描述】:

我需要为分布式 JVM 应用程序实现一个作业队列。

队列必须包含一组必须按顺序执行的作业(即 Java 可运行文件)。将有数百个“作业组”或队列应该在集群上自动并行化。作业队列必须是故障安全的,以便在机器崩溃的情况下,整个应用程序将继续运行。

我也不想重新发明 Weel,所以如果已经有一个库或框架可以满足我的要求,我将不胜感激。

问题:我应该使用什么技术? akka 合适吗,还有其他库可以推荐吗?

【问题讨论】:

    标签: java cluster-computing akka failover job-queue


    【解决方案1】:

    在过去,jGroups 或 ZooKeeper 是标准方法。但是我发现 Akka 更灵活,并且需要你做更多的工作。

    ZooKeeper 相对于 Akka 的功能之一是状态复制,即当某些作业没有进入队列或在执行作业时进程崩溃时,Akka 不会自动恢复它。然而,这为您提供了极大的吞吐量,并且还消除了对完美世界的任何幻想——我们知道我们并不生活在这个世界中。所以您必须尽早考虑现实世界的烧毁场景。

    【讨论】:

    【解决方案2】:

    Akka 绝对合适。查看 Akka 的 Durable Mailboxes 来处理您的“故障安全队列”要求。

    【讨论】:

      【解决方案3】:

      eventsourced 库的可靠渠道可能会对您有所帮助。 Eventsourced 为有状态的 Akka Actor 添加了持久性,并通过通道至少一次传递消息,并允许您从 JVM 崩溃中恢复 Actor 和通道状态。 This example 展示了如何将库与 akka-cluster 一起使用。该示例使用瞬态通道,但您可以通过在示例中使用ReliableChannelProps this line 将其替换为可靠通道。当一个节点上的可靠通道发生故障时,它将在集群中的另一个节点上自动恢复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-06
        • 1970-01-01
        • 2020-12-29
        • 2014-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多