我在这里遇到一种情况,我需要将工作分配给在不同 JVM 中运行的多个 JAVA 进程,可能是不同的机器。
假设我有一个记录 1 到 1000 的表。我正在寻找要收集和分发的工作是 10 组。假设记录 1-10 到 workerOne。然后将 11-20 记录到 workerThree。等等等等。毋庸置疑,workerOne 永远不会做 workerTwo 的工作,除非且直到 workerTwo 无法做到。
这个例子纯粹基于数据库,但可以扩展到任何系统,我相信它是文件处理、电子邮件处理等等。
我有一种小小的感觉,即立即的反应是采用 Master/Worker 方法。然而,这里我们谈论的是不同的 JVM。即使一个 JVM 出现故障,另一个 JVM 也应该继续工作。
现在百万美元的问题是:是否有任何好的框架(生产就绪)可以让我有能力做到这一点。即使有特定需求的具体实现,如数据库记录、文件处理、电子邮件处理等。
我已经看过 Java Parallel Execution Framework,但不确定它是否可以用于不同的 JVM,如果其中一个掉下来,另一个是否会继续运行。我相信 Workers 可以在多个 JVM 上,但是 Master 呢?
更多信息 1:由于 JDK 1.6 的要求,Hadoop 会成为一个问题。这有点过分了。
谢谢,富兰克林