2009-02-12 30 views
13

Ho letto le cosiddette soluzioni "griglia dati" per la piattaforma Java, tra cui Terracotta, GigaSpaces e Coherence. Mi stavo chiedendo se qualcuno ha esperienza nel mondo reale di lavorare con questi strumenti e potrebbe condividere la loro esperienza. Sono anche molto curioso di sapere a quale scala di distribuzione hanno lavorato le persone: stiamo parlando di cluster di nodi 2-4 o avete lavorato con qualcosa di molto più grande di questo?Cosa consiglieresti per una tecnologia di griglia di dati Java su larga scala: Terracotta, GigaSpaces, Coherence, ecc.?

Sono attratto dalla terracotta a causa del suo supporto "in caduta" per Hibernate e Spring, che utilizziamo entrambi pesantemente. Mi piace anche l'idea di come decodifica bytecode in base alla configurazione e non richiede di programmare contro una "griglia API". Non sono a conoscenza di vantaggi per gli strumenti che utilizzano l'approccio di un'API esplicita, ma mi piacerebbe sentirli se effettivamente esistono. :)

Ho anche passato del tempo a leggere su memcached ma sono più interessato a ricevere feedback su queste tre soluzioni specifiche. Sarei curioso di sapere come si misurano con memcached nel caso qualcuno li abbia usati entrambi.

+0

Ho eseguito una JVM a server singolo di grandi dimensioni (6-8 GB attualmente), utilizzando Prevayler e Memcached per alcune cose scaricate. Sono molto interessato a vedere quali risposte ottieni. Di quale distribuzione di dimensioni stai parlando? –

+0

La maggior parte delle implementazioni che stiamo esaminando non sono enormi (4 o meno nodi) ma sono davvero curioso di sapere di implementazioni significativamente più grandi, principalmente per vedere se queste soluzioni scalano linearmente come è richiesto in gran parte della loro documentazione. –

+1

I * sempre * invertire una buona raccomandare-una-domanda - * specialmente * se sono stati chiusi. – mtyson

risposta

7

Avevamo un 50 server che eseguono un'applicazione webservice e tutti questi server sono stati bilanciati in carico utilizzando bigIP. Il requisito era di memorizzare nella cache ogni stato utente in modo che gli stati successivi non eseguissero di nuovo la stessa elaborazione e ottenessero i dati dallo stato precedente. In questo modo il client del webservice non ha bisogno di mantenere lo stato.

Abbiamo usato Terracotta per memorizzare gli stati e non abbiamo mai dovuto affrontare problemi di prestazioni. Nelle ore di punta il numero di richieste è pari a 100 al secondo.

+7

100 richieste al secondo suddivise su 50 server è un carico molto basso, a meno che le richieste siano pesanti dal punto di vista computazionale. – stivlo

2

Non ho abbastanza esperienza con queste tecnologie, ma penso che Apache Hadoop si sia dimostrato scalabile e affidabile. Yahoo lo ha eseguito su 10,000 core Linux cluster.

Si basa sull'algoritmo di Google MapReduce.

This l'articolo descrive MapReduce e perché è necessario preoccuparsene.

+0

Non pensi che Hadoop sia BigData e questa domanda è stata posta per Big-Memory (Terracotta, GigaSpaces, Coherence). Solo un pensiero. – deadpool

3

La libreria che scegli dipende davvero dalla tua applicazione e da ciò che stai cercando di ottenere.

Ho lavorato per un negozio che utilizzava Coherence per fornire scalabilità (e ridondanza, sorta di) per le sue applicazioni web. Abbiamo scoperto che è necessario disporre di circa 4-5 nodi per iniziare a ottenere benefici da Coherence (2 o 3 nodi potenzialmente riducono le prestazioni). Credo che i documenti di Oracle affermino che sono necessari molti (30+) nodi per ottenere davvero un vantaggio con Coherence. Se vai con Coherence, assicurati di avere il tuo hardware configurato correttamente, è molto sensibile alla latenza.

Personalmente starei lontano da una roba "drop-in". Potrebbero darti qualcosa per iniziare, ma alla fine ti imbatterai in problemi di sincronizzazione o di prestazioni e dovresti comunque iniziare a scrivere codice specifico per il tuo livello di griglia. Fondamentalmente, conosci la tua app meglio della libreria e sarai in grado di capire quali elementi devono essere nella cache, quanto tempo dovranno vivere, come sarà utilizzata la tua app, ecc.

8

controlla anche Hazelcast. Hazelcast è un'implementazione transazionale, distribuita/partizionata open source di code, argomenti, mappe, set, elenchi, lock ed esecutori. È super facile lavorare con; basta aggiungere hazelcast.jar nel classpath e iniziare la codifica. Quasi nessuna configurazione è richiesta.

Hazelcast è rilasciato con licenza Apache e è disponibile anche il supporto di livello aziendale. Il codice è ospitato allo Google Code.

Problemi correlati