2009-03-16 84 views
24

Non ho mai usato cache/DHT distribuiti come memcached, jboss cache, ehcache, ecc. Mi chiedo quale, se del caso, sia appropriato per il mio uso.java cache distribuita per bassa latenza, alta disponibilità

In primo luogo, non sto facendo applicazioni web (dato che la maggior parte di questi progetti sembra essere orientata verso le app web). Scrivo server (Order Management Systems in realtà) per le società di trading finanziario. I server stessi non sono troppo complicati. Devono ricevere informazioni (dati di mercato, ordini, esecuzioni, ecc.) Per indirizzarli verso la loro destinazione, mentre possono eventualmente trasformare alcuni di questi messaggi.

sto guardando questi prodotti per risolvere i seguenti problemi:

  • repository sicuro dello stato del server. Preferirei costruire la logica della mia applicazione come un gruppo di trasformatori (simile a Apache Camel) e memorizzare lo stato in un posto "sicuro"

  • Questo repository deve essere distribuito: nel caso in cui uno di questi archivi dati si blocchi , uno o due ulteriori dovrebbero essere attivi e dovrei essere in grado di passare a loro senza problemi

  • Questo repository deve essere veloce. I millisecondi di una sola cifra contano qui, in altre parole, i sistemi che consumano/elaborano questi dati sono sistemi automatici, non umani che cliccano sui collegamenti. Questo sistema deve avere un throughput elevato e latenza bassa. Inviando i miei dati al di fuori del processo, sto necessariamente rallentando le prestazioni, ma sto cercando di bilanciare la velocità assoluta assoluta e la protezione assoluta dei dati.

  • Questo repository deve essere sicuro. Simile al punto su diversi backup on-line, questo sistema ha bisogno di scrivere dati su disco (potenzialmente più di un disco).

Mi piacerebbe davvero smettere di scrivere i miei "server di transazione". Ho ragione a guardare progetti come jboss cache, ehcache, ecc.?

Grazie

risposta

5

Un sacco di istituzioni finanziarie utilizzano Oracle Coherence per questo.

Tuttavia, non corrisponderà a tutti i punti della lista.

4

Credo, JBoss Cache è un bene per i vostri scopi:

  • veloci
  • distribuiti
  • transazionale con l'attuazione MVCC (senza blocco di lettura)
  • supporta JTA
  • supporta la modalità asincrona
  • dati di sfratto per l'archiviazione persistente (jd bc, bdb, ecc.)
9

Hazelcast è una soluzione di caching open source, transazionale e distribuita per Java. Adatto per applicazioni finanziarie. È rilasciato sotto licenza Apache.

Hazelcast è in realtà un po 'più di una cache distribuita; è distribuito l'implementazione di coda, argomento, mappa, multimap, blocco, servizio executor per Java.

4

Hai alcune buone soluzioni gratuite qui. Tuttavia, se hai bisogno di una soluzione più veloce, puoi provare con lo 29 West o con lo Solace che hanno soluzioni di messaggistica affidabili/garantite con latenza inferiore a 100 secondi.

+1

Ma ha bisogno di una cache – HaveAGuess

+1

@HaveAGuess, Questo è un buon punto, tuttavia, l'implementazione di una cache distribuita è relativamente semplice una volta che si dispone di connettività a bassa latenza. –

-2

io suggerisco NCache a causa dei seguenti motivi,

  • supporto .NET e Java
  • Ampia gamma di topologie
  • Nessun cambiamento di codice richiesto
  • altamente distribuito e scalabile
  • Assolutamente gratuito (NCache Express)
+1

Ho intenzione di andare avanti e indovina che @Timmy lavora per Alachisoft. – mjaggard

+0

Questa soluzione .NET –

3

Guarda Gemfire è ad alte prestazioni nella griglia di dati della memoria. Fornisce cache distribuita, query sugli oggetti e notifiche degli eventi.

+0

Può anche mantenere la cache se questo è ciò che si desidera. –

2

Dai uno sguardo allo Cacheonix Distributed Cache and Data Grid. Soddisfa le tue esigenze di bassa latenza e affidabilità fornendo una cache locale coerente e distribuendo i dati memorizzati nella cache su più server e replicando i dati memorizzati nella cache. Divulgazione completa: lavoro per Cacheonix.

Problemi correlati