2009-02-12 4 views
13

Ich habe gelesen auf so genannten "Data Grid" -Lösungen für die Java-Plattform einschließlich Terracotta, GigaSpaces und Kohärenz. Ich habe mich gefragt, ob irgendjemand Erfahrung in der realen Welt hat, wenn er an einem dieser Werkzeuge arbeitet und seine Erfahrung teilen könnte. Ich bin auch wirklich neugierig zu wissen, mit wie viel Einsatz die Leute gearbeitet haben: reden wir über 2-4 Knoten-Cluster oder haben Sie mit etwas wesentlich größerem gearbeitet?Was würden Sie für eine groß angelegte Java-Grid-Technologie empfehlen: Terrakotta, GigaSpaces, Kohärenz usw.?

Ich bin von Terracotta wegen seiner "Drop-in" Unterstützung für Hibernate und Spring angezogen, die wir beide stark verwenden. Ich mag auch die Idee, wie es Bytecode basierend auf der Konfiguration schmückt und nicht verlangt, dass man gegen eine "Grid-API" programmiert. Werkzeuge, die den Ansatz einer expliziten API verwenden, sind mir nicht bewusst, aber ich würde gerne von ihnen hören, wenn sie tatsächlich existieren. :)

Ich habe auch Zeit mit dem Lesen über Memcached verbracht, aber ich bin mehr daran interessiert, Feedback zu hören auf diesen drei spezifischen Lösungen. Ich wäre gespannt zu hören, wie sie gegen Memcached vorgehen, wenn jemand beides benutzt hat.

+0

Ich habe eine große (6 - 8 GB aktuell) Single-Server-JVM gemacht, mit Prevayler und Memcached für einige ausgelagerte Sachen. Ich bin sehr interessiert zu sehen, welche Antworten Sie bekommen. Von welcher Größe sprechen Sie? –

+0

Die meisten Bereitstellungen, die wir untersuchen, sind nicht riesig (4 oder weniger Knoten), aber ich bin wirklich neugierig auf wesentlich größere Bereitstellungen, hauptsächlich um zu sehen, ob diese Lösungen linear skalieren, wie in vielen ihrer Dokumentationen behauptet wird. –

+1

Ich * immer * upvote eine gute Empfehlung-eine-etwas Frage - * vor allem * wenn sie geschlossen wurden. – mtyson

Antwort

7

Wir hatten 50 Server, auf denen eine Webservice-Anwendung lief und alle diese Server wurden mit bigIP ausgeglichen. Die Anforderung bestand darin, jeden Benutzerstatus zwischenzuspeichern, sodass nachfolgende Status nicht dieselbe Verarbeitung erneut ausführen und die Daten aus dem vorherigen Status abrufen. Auf diese Weise muss der Client des Webservice nicht den Status beibehalten.

Wir haben Terracotta die Zustände und konfrontiert nie Performance-Problem cachen. Zu Spitzenzeiten beträgt die Anzahl der Anfragen pro Anwendung 100 pro Sekunde.

+7

100 Anfragen pro Sekunde Aufteilung auf 50 Server ist eine sehr sehr niedrige Last, es sei denn, die Anforderungen sind rechenintensiv. – stivlo

2

Ich habe nicht genug Erfahrung mit diesen Technologien, aber ich denke, Apache Hadoop ist nachweislich skalierbar und zuverlässig. Yahoo lief auf 10,000 core Linux cluster.

Es basiert auf Google MapReduce Algorithmus.

This Artikel beschreibt MapReduce und warum Sie sich darum kümmern sollten.

+0

Glaubst du nicht, Hadoop ist BigData und diese Frage wurde für Big-Memory gestellt (Terracotta, GigaSpaces, Coherence). Nur ein Gedanke. – deadpool

3

Die Bibliothek, die Sie auswählen, hängt von Ihrer Anwendung ab und davon, was Sie erreichen möchten.

Ich arbeitete für ein Geschäft, das Coherence verwendet, um Skalierbarkeit (und Redundanz, Art von) für seine Web-Anwendungen bereitzustellen. Wir haben herausgefunden, dass Sie ungefähr 4-5 Knoten haben müssen, um von Coherence profitieren zu können (2 oder 3 Knoten reduzieren möglicherweise die Leistung). Ich glaube, dass die Oracle-Dokumente sagen, dass Sie viele (30+) Knoten benötigen, um wirklich von Coherence profitieren zu können. Wenn Sie mit Coherence arbeiten, stellen Sie sicher, dass Sie Ihre Hardware richtig eingerichtet haben - sie reagiert sehr empfindlich auf Latenz.

Ich persönlich würde bleiben weg von einem "Drop-in" Zeug. Sie können Ihnen vielleicht etwas geben, mit dem Sie anfangen können, aber Sie werden schließlich mit Synchronisations- oder Leistungsproblemen konfrontiert werden und müssen sowieso Code schreiben, der für Ihre Rasterebene spezifisch ist. Grundsätzlich kennen Sie Ihre App besser als die Bibliothek und können herausfinden, welche Objekte im Cache gespeichert werden müssen, wie lange sie leben müssen, wie Ihre App verwendet wird usw.

8

Sie möchten vielleicht Auschecken Hazelcast auch. Hazelcast ist eine quelloffene transaktionale, verteilte/partitionierte Implementierung von Warteschlangen-, Topic-, Map-, Set-, List-, Lock- und Executor-Services. Es ist super einfach damit zu arbeiten; Füge einfach hazelcast.jar in deinen Klassenpfad ein und beginne zu programmieren. Fast keine Konfiguration ist erforderlich.

Hazelcast ist unter Apache-Lizenz veröffentlicht und Enterprise-Support ist ebenfalls verfügbar. Der Code wird unter Google Code gehostet.

Verwandte Themen