Una WebApp scrive un flusso di dati proveniente da una rete su disco come coppia chiave / valore e quindi legge & inviarlo nuovamente sulla rete dopo pochi millisecondi nel 99% dei casi. Nell'1% dei casi la scrittura / lettura può essere di poche ore a giorni di distanza (davvero non lo so).
La latenza è rigorosa "no" nell'app e dobbiamo servire il 100% dei clienti, quindi sto pianificando di inserire i dati nella RAM e successivamente leggerli e inviarli via rete e scrivere solo su disco se i dati non vengono letti da RAM entro un certo intervallo prefissato.
Quale potrebbe essere la soluzione a questo problema?
P.S - Memcached sembra una buona soluzione per l'utilizzo della RAM anziché del disco, ma può memcached la lettura / scrittura del disco dopo time_to_live?
Anch'io sto guardando Couchbase ma non voglio scrivere su disco in tutti i casi in quanto il 99% di scrittura / lettura avviene in pochi millisecondi.
È possibile che dopo time_to_die Memcached possa scrivere la chiave / il valore su Couchbase invece di rimuoverlo dalla RAM e leggerlo su richiesta?
[Modifica 1]
Dopo aver trascorso gli ultimi tentativi di esplorare varie opzioni. Quanto segue sembra una possibile soluzione
- Scrivi il flusso di dati simultaneamente sulla RAM (usando Memcached) e usando il disco (GlusterFS).
- Nel caso in cui i dati siano richiesti dal livello applicazione, controllarli prima nella RAM (Memcached) se restituiscono i dati ok, se non controllano i dati sul disco GlusterFS.
- Rimuovi il flusso di dati dalla RAM se i dati sono richiesti dall'applicazione o quando time_to_live viene raggiunto a seconda di quale sia precedente.
Suggerimenti molto graditi.