Frage

Ich Auswertung Terracotta mir eine Anwendung skaliert bis zu helfen, die derzeit RAM-begrenzt ist. Es ist ein kollaboratives Filter und speichert etwa 2 Kilobyte Daten pro Benutzer. Ich will Amazon EC2 verwenden, die ich bin begrenzt auf 14 GB RAM bedeutet, die mir ein wirksame pro-Server gibt obere Grenze von rund 7 Millionen Nutzer. Ich muss in der Lage, darüber hinaus zu skalieren.

Auf der Grundlage meiner Lektüre so weit ich höre, dass Terracotta ein Clustered Heap größer als der verfügbare RAM auf jedem Server haben kann. Wäre es rentabel sein, eine effektive gruppierten Haufen 30GB oder mehr zu haben, wobei jeder der Server nur 14GB unterstützt?

Die pro-Benutzerdaten (der Großteil davon Arrays von Schwimmern sind) ändert sich sehr häufig, möglicherweise Hunderttausende von Mal pro Minute. Es ist nicht notwendig, für jedes einzelne dieser Änderungen an anderen Knoten im Cluster synchronisiert werden, sobald sie auftreten. Ist es möglich, einige Objektfelder regelmäßig nur zu synchronisieren?

War es hilfreich?

Lösung

Ich würde sagen, die Antwort ist ein qualifizierter ja dafür. Terracotta ermöglicht es Ihnen, mit gruppierten Haufen größer als die Größe einer einzelnen JVM zu arbeiten, obwohl das ist nicht der häufigste Anwendungsfall.

Sie müssen noch im Sinne a) die Arbeitssatzgröße zu halten und b) die Menge des Datenverkehrs. Für a) gibt es einige Reihe von Daten, die im Speicher sein muss, um die Arbeit zu einem bestimmten Zeitpunkt und wenn das Arbeitssatzgröße> Heap-Größe, Leistung leidet offensichtlich auszuführen. Für b), wobei jedes Stück von Daten hinzugefügt / in dem geclusterten heap aktualisiert muß an den Server gesendet werden. Terracotta ist am besten, wenn Sie ändern feinkörnige Felder in pojo Graphen. Arbeiten mit großen Arrays nimmt nicht den besten Vorteil der Terrakotta-Fähigkeiten (was nicht zu sagen, dass die Leute es nicht, dass die Art und Weise verwenden manchmal).

Wenn Sie eine Menge Müll schaffen, dann ist der Terrakotta-Speicher-Manager und verteilen Garbage Collector muss in der Lage sein, damit Schritt zu halten. Es ist schwer, ohne versucht zu sagen, ob Ihre Datenmengen dort die verfügbare Bandbreite nicht überschreiten.

Ihre Bewerbung wird enorm profitieren, wenn Sie mehrere Server und Daten ausgeführt wird durch Server partitioniert oder eine gewisse Menge an Referenzlokalität hat. In diesem Fall müssen Sie nur die Daten für eine Partition des Servers im Heap und der Rest muss nicht in den Speicher bemängelt werden. Es wird natürlich bemängelt werden bei Bedarf für Failover / Verfügbarkeit, wenn andere Server ausfallen. Das bedeutet, dass im Fall von partitionierten Daten, Sie sind nicht auf alle Knoten senden, nur Transaktionen an den Server senden.

Aus Zahlen Sicht ist es möglich, Index 30 GB Daten, so dass auf jede harte Grenze nicht in der Nähe ist.

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