Auswahl einer verteilten Shared Memory-Lösung

Ich habe eine Aufgabe zu bauen, einen Prototyp für ein Massiv skalierbares distributed shared memory (DSM) app. Der Prototyp würde nur dazu dienen als proof-of-concept, aber ich will meine Zeit damit verbringen, am effektivsten durch die Wahl der Komponenten, die verwendet werden würde in der realen Lösung später auf.

Ziel dieser Lösung ist die Daten-Eingang von einer externen Quelle, stößt Sie es und stellen Sie das Ergebnis in einer Vielzahl von Oberflächen. Solche "frontends" würden, nehmen Sie einfach die Daten aus dem cache, und servieren Sie es ohne zusätzliche Verarbeitung. Die Höhe der frontend-Zugriffe auf diese Daten können buchstäblich Millionen pro Sekunde.

Den Daten selbst ist sehr volatil, es kann (und tut) sich Recht schnell ändern. Aber die frontends sollten sehen, "alte" Daten, bis die neueste wurde verarbeitet und zwischengespeichert. Die Verarbeitung und das schreiben erfolgt durch einen einzelnen (redundanten) Knoten, während andere Knoten nur die Daten Lesen. In anderen Worten: kein read-through-Verhalten.

War ich auf der Suche nach Lösungen, wie memcached allerdings dieser Besondere, nicht erfüllen alle unsere Anforderungen, die nachstehend aufgeführt sind:

  1. Die Lösung muss mindestens Java-client-APIdie einigermaßen gut gepflegt wie der rest der app ist in Java geschrieben und wir sind erfahrene Java-Entwickler;
  2. Die Lösung muss vollständig elastischen: es sollte möglich sein, das hinzufügen neuer Knoten ohne Neustart die anderen Knoten im cluster;
  3. Die Lösung muss in der Lage sein zu handhaben failover. Ja, ich weiß, das bedeutet etwas Aufwand, aber insgesamt dienten Daten, die Größe ist nicht groß (1G max) also das sollte nicht das problem sein. Von "failover" ich meine, nahtlose Ausführung, ohne hardcoding/ändern von server-IP-Adresse(N) wie in memcached-clients wenn ein Knoten ausfällt;
  4. Im Idealfall sollte es möglich sein, geben Sie den Grad von Daten, die überlappende (z.B. wie viele Kopien der gleichen Daten, die gespeichert werden soll in der DSM-cluster);
  5. Es gibt keine Notwendigkeit, um dauerhaft speichern Sie alle Daten, aber könnte es erforderlich sein, von post-processing einige der Daten (z.B. Serialisierung der DB).
  6. Preis. Offensichtlich bevorzugen wir freie/open source-aber wir zahlen gerne einen angemessenen Betrag, wenn eine Lösung ist es Wert. In irgendeiner Weise bezahlt, 24 Stunden am Tag support-Vertrag ist ein muss.
  7. Die ganze Sache hat gehostet werden, in unsere Rechenzentrenso dass SaaS-Angebote wie Amazon SimpleDB sind out-of-scope. Würden wir nur dann berücksichtigen Sie dies, wenn keine anderen Optionen zur Verfügung stehen würde.
  8. Im Idealfall die Lösung wäre streng konsistente (in CAP), jedoch eventuelle Konsistenz kann betrachtet werden als eine option.

Vielen Dank im Voraus für alle Ideen.

InformationsquelleAutor der Frage mindas | 2010-06-15

Schreibe einen Kommentar