我编写了一个多线程Java程序来解决一个令人尴尬的并行问题,它利用了多核CPU上的所有空闲CPU周期。我想重构我的解决方案,以便它可以在多个节点上运行,同时仍保留我已编写的大部分代码。
我过去曾使用过MP的MPI,并被告知这是解决CPU周期最大化问题的“正确”方法,但我也知道Java中的其他并发框架,如RMI,并想知道它们是否存在同样好。
有没有一种很好的方法来处理Java中的多节点和多核并发,其主要目标是尽可能利用群集中最多的CPU周期?
编辑:我的印象是没有简单的方法来处理这些问题。我并不感到惊讶,但我希望。 :)
答案 0 :(得分:10)
取决于您正在做什么以及您可能想要查看的预算(无特定顺序)
另见:
答案 1 :(得分:7)
您可以尝试Hazelcast。它有一个分布式ExecutorService。这应该允许您将任务添加到跨任意数量的节点运行的服务。
答案 2 :(得分:5)
JMS是一个很好的起点。
答案 3 :(得分:4)
另外考虑Apache Hadoop,它使用MapReduce,非常适合许多并行解决方案。