我需要为分布式 JVM 应用程序实现一个作业队列。
队列必须包含一组必须按顺序执行的作业(即 Java 可运行文件)。将有数百个“作业组”或队列应该在集群上自动并行化。作业队列必须是故障安全的,以便在机器崩溃的情况下,整个应用程序将继续运行。
此外,我不想重新发明 Weel,所以如果已经有一个库或框架可以满足我的要求,我将不胜感激。
问题:我应该使用什么技术?akka合适吗,还有其他库可以推荐吗?
在过去,jGroups 或 ZooKeeper 是标准方法。但是我发现 Akka 更灵活,并且需要你做更多的工作。
ZooKeeper 对 Akka 的特性之一是状态复制,即当某些作业没有进入队列或在执行作业时进程崩溃时,Akka 不会自动恢复它。然而,这为您提供了巨大的吞吐量,并且还抛弃了对完美世界的任何幻想——我们知道我们并不生活在这个世界中。所以您必须尽早考虑现实世界的烧毁场景。
Akka 绝对合适。查看 Akka 的耐用邮箱来处理您的“故障安全队列”要求。