2012-04-03 39 views
8

Ich versuche zu finden, wie verteiltes Caching für Anwendungen implementiert wird.Ist es möglich, verteiltes Caching mit Ehcache ohne Terracotta Enterprise Suite zu implementieren?

Ehcache bereits für das Zwischenspeichern in meinem Projekt verwendet, deshalb suche ich, wie man dieses Problem löst. Aber leider scheint es, dass Terracotta Enterprise Suite dafür benötigt wird und es kommerziell ist. Ist es nicht? Gibt es eine andere Lösung für die Verwendung von Ehcache für verteiltes Caching (RMI oder irgendetwas anderes)?

Antwort

2

Sie benötigen keine Terrakotta-Unternehmenssuite, um Ihre Ehcache-Instanzen zu gruppieren. So können Sie Clustering mit Ehcache & Terracotta heute verwenden, mit reinem OSS:

http://www.ehcache.org/documentation/configuration/distributed-cache-configuration

Edit: Dieser Link abgelaufen ist. Unten ist die neue Verbindung zu geclusterten Cache http://www.ehcache.org/documentation/3.4/clustered-cache.html

nun verbunden, wenn Sie die Replikation benötigen, können Sie andere Mechanismen wie RMI in der Tat verwenden:

http://www.ehcache.org/documentation/replication/index

Obwohl nur die Terrakotta-Clustering würden Sie HA bringen und Features wie Konsistenz Garantien und dergleichen ...

+1

Ich habe versucht, Ehcache mit Terracotta OSS zu verwenden, aber gescheitert :( Ich habe zwei Knoten auf getrennten Servern (A, B). Jeder Knoten haben eigene ehcache.xml (CM). Jedes CM enthält und haben einen Cache, namens TestCache, mit innerhalb. Ok, 'A' Anwendung Artikel zu Cache.Now, wenn 'A' wird erneut angefordert - es wird zwischengespeicherten Artikel erfolgreich.Aber 'B' wird vermissen Wie ich in Dev-Konsole - Terracotta verstehe, ist es üblich, Cache Manager und Cache ist auch für beide Anwendungen. (Ursache zeigt Treffer und Misses) Muss ich Caches manuell freigeben? – Gadget

+0

Ich meine, Muss ich einige zusätzliche Konfigurationen für tc-config.xml festlegen? oder zu ehcache.xml? In allen Beispielen wird das Element "root" für die "Freigabe" von Cache-Managern verwendet. Aber ich habe keine CacheManager Felder im Code. Alles nur in ehcache.xml beschrieben. Außerdem gibt es in tc-config.xml eine 'instrumentierte Klassen' Einstellung. Muss ich alle Klassen von zwischengespeicherten Objekten manuell auflisten? Es sieht merkwürdig aus wenn ich hoffe, dass ehcache.xml ausreichen sollte. – Gadget

+0

Ein terracottaConfig-Element in den ehcache-Ordner einfügen, das auf den Terracotta-Server zeigt, und jedem Cache, den Sie gruppieren möchten, ein Terrakotta-Element hinzufügen, sollte ausreichen, um Ihnen den Einstieg zu erleichtern.Sind Sie sicher, dass die richtige XML-Datei abgerufen wird? –

0

Sie können auch versuchen Hazelcast. Es ist Open Source, verteilter Cache und ist super einfach zu bedienen.

PS: Ich arbeite für Hazelcast

+0

Hazelcast Enterprise (nicht kostenlos, für Geld) ist für die WAN-Replikation erforderlich. – AlexS

1

gibt es verschiedene Möglichkeiten verteilten Cache mit ehcache Mechanismus zu implementieren. Man kann RMI oder Jgroups verwenden.

In einem der Projekt kam ich durch die gleiche Situation und nach ein paar Recherchen habe ich herausgefunden, Verwenden von Redis-Server für das Cache-Management ist eine einfache und effektive Lösung.

Ich empfehle dies als eine Antwort, denn wenn Sie versuchen, mit echcache verwenden, wird es Zeit und Komplexität erhöhen und Sie können mehrere Cache-Manager in Ihrem Arbeitsbereich haben.

Verwandte Themen