2012-04-03 28 views
8

Provo a trovare come implementare il caching distribuito per le applicazioni.È possibile implementare il caching distribuito utilizzando Ehcache senza Terracotta Enterprise Suite?

Ehcache già utilizzato per il caching nel mio progetto, è per questo che cerco come risolvere questo problema usandolo. Ma, sfortunatamente, sembra che Terracotta Enterprise Suite sia necessaria per questo ed è commerciale. Non è vero? Esiste un'altra soluzione su come utilizzare Ehcache per la cache distribuita (RMI o altro)?

risposta

2

Non è necessario disporre di una suite aziendale in terracotta per raggruppare le istanze Ehcache. Così si può utilizzare il clustering con EHCache & terracotta oggi, con puro OSS:

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

Edit: Questo link è scaduto. Di seguito è riportato il nuovo collegamento relativi alla cache cluster http://www.ehcache.org/documentation/3.4/clustered-cache.html

Ora, se avete bisogno di replica, è possibile utilizzare altri meccanismi come RMI anzi:

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

Anche se, solo il raggruppamento di terracotta avrebbe portato voi HA e caratteristiche come garanzie di coerenza e simili ...

+1

Ho provato a utilizzare Ehcache con Terracotta OSS, ma non è riuscito :( Ho due nodi su server separati (A, B) .Ogni nodo ha il proprio ehcache.xml (CM). Ogni CM contiene e hanno una cache, denominata TestCache, con all'interno. Ok, l'applicazione 'A' mette l'elemento nella cache. Ora, se 'A' verrà richiesto di nuovo, restituirà l'elemento memorizzato nella cache. cache Come vedo in dev-console - Terracotta capisce che è comune Cache Manager e la cache è comune anche per entrambe le applicazioni. (Perché mostra hit e miss) Ho bisogno di condividere le cache manualmente? – Gadget

+0

Voglio dire, ho bisogno di impostare alcune configurazioni aggiuntive per tc-config.xml o su ehcache.xml? In tutti gli esempi, l'elemento 'root' utilizzato per la "condivisione" dei gestori della cache. Ma non ho nessun campo cacheManager nel codice. Tutto descritto solo all'interno di ehcache.xml. Inoltre, c'è un'impostazione 'classi strumentate' in tc-config.xml. Devo elencare manualmente tutte le Classi di oggetti memorizzati nella cache? Sembra strano se così, perché spero che ehcache.xml dovrebbe essere sufficiente. – Gadget

+0

aggiungendo un elemento terracottaConfig all'interno di uno ehcache, puntando al server Terracotta e aggiungendo un elemento di terracotta a ciascuna cache che si desidera cluster dovrebbe essere sufficiente per iniziare.Sei sicuro che il file xml giusto sia stato prelevato? –

0

Si consiglia di provare Hazelcast pure. È open source, cache distribuita ed è super facile da usare.

PS: io lavoro per Hazelcast

+0

Hazelcast Enterprise (non gratuito, a pagamento) è richiesto per la replica WAN. – AlexS

1

ci sono diversi modi per implementare cache distribuita utilizzando il meccanismo EHCache. Si può usare RMI o Jgroups.

In uno dei progetti mi sono imbattuto nella stessa situazione e dopo alcune ricerche ho scoperto che utilizzare il server Redis per la gestione della cache è una soluzione semplice ed efficace.

Suggerisco questo come una risposta perché se si tenta di utilizzare ehcache ci vorrà del tempo e aumentare la complessità e si può avere più gestore di cache nel proprio spazio di lavoro.