2010-08-03 11 views
18

Ich habe ein Multithread-Java-Programm geschrieben, um ein peinlich paralleles Problem zu lösen, so dass es alle freien CPU-Zyklen einer Multi-Core-CPU nutzt. Ich möchte meine Lösung so umgestalten, dass sie auf mehreren Knoten ausgeführt werden kann, während der Großteil des Codes, den ich bereits geschrieben habe, beibehalten wird.Multi-Node-Parallelität in Java

Ich habe MPI mit C in der Vergangenheit verwendet und mir wurde gesagt, dass es der "richtige" Weg zur Maximierung der CPU-Zyklen ist, aber ich kenne auch andere gleichzeitige Frameworks in Java wie RMI und frage mich, ob sie sind genauso gut.

Gibt es eine gute Möglichkeit, Multi-Node- und Multi-Core-Parallelität in Java zu behandeln, wo das Hauptziel darin besteht, möglichst viele CPU-Zyklen außerhalb des Clusters zu nutzen?

Bearbeiten: Ich habe den Eindruck, dass es keinen einfachen Weg gibt, mit diesem Zeug umzugehen. Ich bin nicht überrascht, aber ich hatte gehofft. :)

Antwort

5

JMS ist ein guter Anfang.

+0

ja alle MQ, die Client-Load-Balancing unterstützen, die meisten – oluies

7

Sie können versuchen Hazelcast. Es hat einen verteilten ExecutorService. Dies sollte Ihnen erlauben, Aufgaben zu einem Service hinzuzufügen, die über eine beliebige Anzahl von Knoten laufen.

10

Hängt davon ab, was Sie tun, und Ihr Budget, das Sie vielleicht in aussehen soll (in keiner bestimmten Reihenfolge)

Siehe auch:

+1

+1 sein sollten, verwenden wir Terracotta und es funktioniert gut – Bozho

4

Sehen Sie sich auch Apache Hadoop, verwendet es MapReduce und eignet sich gut für viele parallele Lösungen.