EhCache mit RMI, JMS und JGroups Clustering

EhCache bietet nur in der kommerziellen Version lineare Skalierung.

Sie skalieren bis in den Terrabyte Bereich. Kann auf mehrere Server verteil werden. Die Verteilung, Synchronisierung kann (scheinbar) über RMI, JMS, JGroups erfolgen.

Wird Terracotta zum nächsten JBoss?

++++++++++++++++++++++++

Ehcache hat ein Feature readOnCopy. Wird gebraucht, wenn mehrere ClassLoader den gleichen Cache benutzen. Siehe auch den Unified Classloader von JBoss. ReadOnCopy legt bei jedem get() eine neue Kopie an. Das hat Auswirkung auf die Performance, da bei jedem get) eine Deserialisierung ausgeführt werden muß. Außerdem sind die Kopien nicht änderbar. Änderungen müssen auf dem Cachemanager aufgerufen werden. (Was auch nicht die performanteste Lösung sein wird.) Alternative kann sein, einfach noch mal eine Kopie anzulegen / es noch mal in ein neues Objekt / DTO umzukopieren. Alles zu berücksichtigen, wenn man auf Performance schauen muß, was meistens der Grund für den Einsatz eines Caches ist.

++++++++++++++++++++++++++++++++++++++++++

Man kann CacheEventListeners verwenden um invalidierte Elemente gleich wieder neu zu laden. Das gibt es als Ehcache Feature, aber auch als Terracotta Feature. Ersteres arbeitet unkonfiguriert nur lokal. Man muß Terracotta und Ehcache so konfigurieren, daß die Terracotta Cluster Events verwendet werden. Dann klappt es auch im Cluster.

++++++++++++++++++++++++++++++++++++++++++

Das Feature overflowToDisk funktioniert neben dem Erreichen der maxElements auch falls 70% der old generation der JVM erreicht ist.

++++++++++++++++++++++++++++++++++++++++++

RMI, JGroups und JMS Beispielkonfiguration von Ehcache Cluster sind hier zu finden.

++++++++++++++++++++++++++++++++++++++++++

Ehcache Cluster Replication bietet updateViaInvalidate und updateViaCopy. Letzteres ist ein gute Möglichkeit um DB Last zu vermeiden. Man hat aber erhöhte Nutzlast bei der Replizierung. Muß man im Einzelfall abwägen, was die bessere Leistung im Livebetrieb. Vorgabewert ist updateViaCopy. Ich habe angenommen, invalidate wäre Vorgabe.

Was passiert eigentlich mit konkurrierenden Updates, welche sich beim Verteilen treffen? Bei Lotus Notes muß man die händisch auflösen. Hier auch?

Advertisements
Dieser Beitrag wurde unter Uncategorized veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s