0

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

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

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

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

4

3 回答 3

2

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

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

于 2013-01-21T15:24:59.707 回答
0

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

于 2013-01-22T07:56:14.960 回答
0

Akka 绝对合适。查看 Akka 的耐用邮箱来处理您的“故障安全队列”要求。

于 2013-01-22T03:24:06.667 回答