Was ist die beste Bibliothek für Java Grid / Cluster aktivieren Ihre Anwendung? [geschlossen]

StackOverflow https://stackoverflow.com/questions/383920

Frage

Dies ist die Möglichkeit, Ihre Anwendung auf einem Cluster von Servern mit der Absicht ausführen, um die Last zu verteilen und auch zusätzliche Redundanz zur Verfügung stellen.

Ich habe eine Präsentation gesehen für Gridgain und ich war sehr beeindruckt.

bitte von allen anderen?

War es hilfreich?

Lösung

Es gibt mehrere:

Jetzt habe ich nicht alle diese verwendet, aber ich habe verwendet oder untersuchte die Mehrheit von ihnen.

Gridgain und GigaSpaces sind mehr zentriert um Grid-Computing als Caching und (imho) am besten geeignet Compute Grids als Datennetze (siehe diese Erklärung von Rechen vs Datennetzen ). Ich finde GigaSpaces eine sehr interessante Technologie zu sein und es mehrere Lizenzierungsoptionen, darunter auch eine kostenlose Version und eine kostenlose Vollversion für Start-ups.

Coherence und Terracotta versuchen Caches als zu behandeln Karten , was eine ziemlich natürliche Abstraktion ist. Ich habe Coherence viel verwendet, und es ist ein ausgezeichnetes High-Performance-Produkt, aber nicht billig. Terracotta Ich bin weniger vertraut mit. Die Dokumentation für Coherence finde ich manchmal etwas fehlt, aber es ist wirklich ein starkes Produkt.

OSCache Ich habe in erster Linie als Mittel zur Verringerung der Speichernutzung und Fragmentierung in Java Web-Anwendungen verwendet, da es einen ziemlich ordentlich JSP-Tag hat. Wenn Sie schon einmal bei kompilierten JSPs haben gesucht, sehen Sie sie viel String Verkettungen tun. Mit diesem Tag können Sie effektiv die Ergebnisse eines Segments von JSP-Code und HTML-Code in einem einzigen String-Cache, der enorm Leistung in einigen Fällen verbessern.

EHCache ist eine einfache Caching-Lösung, die ich auch in Web-Anwendungen verwendet habe. Nie als verteiltes Cache obwohl, aber es kann das tun. Ich neige dazu, es als eine schnelle und schmutzige Lösung zu sehen, aber das ist vielleicht meine Voreingenommenheit.

Memcached ist besonders prevelent in der PHP-Welt (und wurde von solchen Seiten wie Facebook). Es ist eine wirklich leichte und einfache Lösung und hat den Vorteil, dass es nicht im gleichen Prozess läuft, und Sie werden wohl eine bessere Interoperabilität Optionen mit anderen Technologie-Stacks haben, wenn dies für Sie wichtig ist.

Andere Tipps

Sie möchten vielleicht auch Hazelcast überprüfen. Hazelcast ist eine Open-Source-transaktionale, verteilt / partitioniert Umsetzung der Warteschlange, Themas, Karte, Set, Liste, Schloss und Vollstreckers Bedienung. Es ist super einfach zu handhaben; nur hazelcast.jar in Ihrem Classpath hinzu und starten Codierung. Fast keine Konfiguration erforderlich.

Wenn Sie interessiert sind in Ihrem Runnable, aufrufbare Aufgaben in einer verteilten Art und Weise ausgeführt wird, dann lesen Sie bitte Distributed Executor Service-Dokumentation unter http://code.google.com/docreader/#p=hazelcast

Hazelcast ist unter der Apache-Lizenz und Enterprise-Grade-Unterstützung veröffentlicht ist ebenfalls verfügbar.

Haben Sie darüber nachgedacht Infinispan ? Es ist eine Open-Source-Datenraster Plattform, von JBoss.org. Für weitere Informationen empfehle ich Ihnen, lesen Sie diese (alte) Blog-Post das Projekt ankündigt, zusammen mit interessanten Blog-Beiträgen Banknoten-, darunter einer auf mit Infinispan mit Hibernate und als Standalone-Cache . Noch vor kurzem auf Red Hat Enterprise Data Grid . Es gibt einen schnellen "getting started" guide und einen DZone refcard zu, auch ein YouTube-Video: )

Ich denke, @ cletus Zusammenfassung ziemlich gut. Ich wollte erwähnen, dass Terracotta viel mehr als nur eine verteilten Cache in Form einer Karte zur Verfügung stellt. Es Clustern Java Heap und Synchronisation Primitiven, ein gleichzeitiges Java-Programm in ein verteilte Java-Programm einschalten. Sie können damit Caching tun (einschließlich der Verwendung von verteilten Versionen von Open-Source-Cache-Libs) oder ein paar anderen Sachen.

Für die Arbeitsverteilung gibt es einige zusätzliche Bibliotheken geschrieben oben auf Terracotta, insbesondere die tim-Leitungen (für Meldungen) und tim-masterworker (für Master-Worker-Stil Verteilung) sind große Abstraktionen auf der Terrakotta. Diese Bibliothek ist auf der Terrakotta-Schmiede:

Das kürzlich hinzugefügt Seite kann ein wenig zusätzlichen Informationen im Vergleich zu einigen anderen möglichen Datentechnologien hinzu:

JPPF ist auch schön.

Wenn Sie ein wenig auf niedrigerer Ebene gehen wollen, gibt es JGroups , die Sie mit dem bietet Grundlagen der Java-Prozesse Clustering.

Und auch überprüfen ProActive

Ein weiteres

Sie zur Liste hinzufügen können, ist Appistry CloudIQ . Es ist eine verteilte Rechnerumgebung. Es ist als ein kostenlosen Download rel="nofollow bis 5 Maschinen auf. Es enthält Lastverteilung sowie die automatische Ausfallsicherung der Arbeit im Fall eines Hardware-Fehlers, unter anderem Features.

Für Grid-Computing, können Sie auch Ice Grid oder Datasynapse GridServer . Diese beiden bieten eine sehr wirksame Mechanismen für die Aufgaben zu verteilen und bieten Failover und Redundanz.

Ich glaube, Ihre Frage auf unterschiedliche Weise interpretiert worden ist, fragen Sie über eine Bibliothek, die Sie verwenden können, um Ihre Anwendung „Cluster zu ermöglichen“.

Während einige der oben genannten Libs helfen spezifische Cluster-Funktionalität wie verteilte Caching zur Verfügung stellen kann, die mehr konventionelle Art und Weise der Arbeit Lastmanagement zu ermöglichen, ist die Verwendung eines J2EE-Container.

Durch eine Clustered-Container-Instanz einrichten dies ermöglicht es Ihnen HA-Funktionen und Arbeitslastmanagement zu nutzen, ist Clustering fast transparent auf der Anwendungsebene. Ich sage fast, weil, wenn Anwendungen zu schreiben, die gruppiert werden können, werden Sie vorsichtig sein, wie Sie Zustand verwalten, zum Beispiel, wenn Sie irgendeine Art von Cache implementiert Sie benötigen würde den Zustand des Cache für jede Maschine zu replizieren.

Ein guter Anfang wäre zum Download Glasfischen und versuchen und das Setup eine gruppierte Instanz Glasfischen.

Ich hoffe, das hilft.

Karl

Überprüfen Sie auch Fura

Eine sehr späte Antwort - aber es hängt auch von der Art und Weise der Anwendung konfiguriert ist. Vielleicht möchten Sie über eine ausführbare Datei remote statt mit einem der Ansätze auszuführen.

Apologies für den Mangel an Links - aber bis meine Wiederholungen schreiben kann ich nicht mehr als eine. Produkte in Kursivschrift sollte Google einfach sein.

Wenn Sie eine ausführbare Datei in einer parametrischen Suche ausführen mögen - sagen Sie die gleiche ausführbare Datei mit Reihe von Optionen für jede Instanz drehen wollen - dann ein traditioneller Batch-Ansatz funktioniert gut. Dies ist eine sehr traditionelle High Performance Computing Ansatz, der in breiten Einsatz noch ist - geeignete Infrastrukturen für diese Skala bei Unternehmen Handhabung ist Platform LSF Datasynapse GridServer PBS oder, wie es reift Windows HPC Server . Vielleicht möchten Sie auch einen Blick auf Open-Source-Produkten nehmen wie Globus und Condor . Je nachdem, wie groß Ihre Anwendung ist, können Sie auch schauen gLite , die für sehr große angelegte wissenschaftliche Projekte wie der LHC verwendet wird.

Der Ansatz trad HPC, profitiert Ihren App-Code aus den Prozessen isolierte Ihre Compute-Infrastruktur umfassen, kann aber eine Leistungseinbuße nehmen, während andere schnellen Durchsatz zeigen kann, aber zu Speicherlecks und anderen Problemen für lange Betriebszeit Systeme anfällig sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top