2009-09-28 34 views
12

Sto cercando una soluzione di caching distribuita java. Vorremmo caratteristiche piace:Caching distribuito

  • Distributed
  • Auto-Discovery
  • ridondanza
  • non centralizzato

Abbiamo analizzato un quadro del genere in terracotta che sembra essere tutto quello che avrebbe mai desiderato da un framework di caching ... Tuttavia, sembra che ci sia un nodo di caching centrale che è necessario diventare il nostro single-point-of-failure.

Altre idee oltre a implementare la nostra soluzione?

+0

Terracotta non ha un SPOF: è possibile utilizzare tutti i backup a caldo che si desidera assumere quando un server attivo muore. Con Terracotta FX, puoi persino avere più attivazioni per una maggiore scala. –

risposta

0

Terracotta offre anche una cache distribuita.

+0

Solo versione commerciale no? – cletus

+0

Non credo se utilizzi l'edizione ES di Terracotta (vedi http://www.terracotta.org/web/display/enterprise/Products). –

4

Terracotta ha recentemente acquisito Ehcache e dispone di released a tight integration of the Ehcache API with the Terracotta clustered store in un semplice pacchetto e richiede solo poche righe aggiuntive di configurazione Ehcache per passare da un singolo nodo a un cluster, anche se è necessario eseguire anche il processo del server Terracotta.

Ehcache con l'edizione Terracotta ES è open source e gratuito. Le licenze commerciali sono disponibili se si desidera supporto, ridimensionamento, indennizzo, supporto patch, ecc.

Terracotta utilizza un server centrale array, non un singolo server centrale, quindi non esiste un singolo punto di errore! È possibile configurare tutti i server di backup a caldo che si desidera e questi server di backup possono essere configurati per assumere il controllo quando il server attivo si arresta. Con Terracotta FX (prodotto commerciale), puoi anche utilizzare più server attivi.

+0

Il problema con TerraCotta è che al fine di non avere un singolo punto di errore, è necessario un minimo di 4 macchine (o JVM): - 2 per la tua app - 2 per TerraCotta Preferirei avere 4 JVM per la mia app ma con il clustering nella cache in-JVM. –

14

Prova Hazelcast. È un cluster open source e una piattaforma di distribuzione dei dati altamente scalabile per Java. Soddisfa tutte le tue esigenze. Inoltre è super facile da usare.

+0

Nel caso di una partizione di rete, Hazelcast favorisce la coerenza rispetto alla disponibilità nel CAP theroem (https://en.wikipedia.org/wiki/CAP_theorem)? –

1

Normalmente il singolo punto di errore si verifica quando tutte le operazioni vengono eseguite su un singolo nodo e se tale nodo si interrompe, l'intera operazione può ridursi. la soluzione di questo problema consiste nell'utilizzare la topologia come replica o replica di partizione. se una volta che il nodo scende, l'intera operazione passerà a un altro nodo senza alcun tipo di perdita di dati.

per quanto riguarda le funzionalità che si stanno cercando possono essere trovati in un singolo prodotto, NCache, come Umer ha anche menzionato.

4

Prova Infinispan. La cache Infinispan può essere utilizzata come cache distribuita e può anche essere utilizzata come cache replicata. Non c'è possibilità di guasto a punto singolo. In modalità cache distribuita può fornire più spazio rispetto alla dimensione heap. Considerare che ci sono 4 nodi in cluster ciascuno con 1 GB di dimensione heap e Infinispan utilizza come cache replicata quindi il cluster di dimensione totale ha 1 GB ma se Infinispan viene utilizzato come cache distribuita e impostato 2 copie per elemento di dati, la dimensione totale sarà 2 GB. http://www.jboss.org/infinispan

+0

hmm..buono a sapersi .. –

1

Sono in ritardo per la festa ma avete provato TayzGrid, un open source java distributed cache. Conosciuto anche come griglia dati in memoria o archivio valori chiave.

risponde a tutte le esigenze di base

- Distributed 
- Auto-Discovery 
- Redundancy 
- Non-Centralized 

Gestisce inoltre scenari di failover avanzate come split brain e si riavvia improvvisi. Tutti i nodi sono intelligenti quindi completamente distribuiti.

È anche possibile scegliere la topologia che si desidera utilizzare (Partizione o replicata). Se si desidera utilizzare topologie più avanzate (Partizione di replica), è possibile utilizzare maybe buy a license.