Una cache distribuita è essenziale per qualsiasi applicazione che richieda prestazioni veloci durante carichi di transazione estremi. Una cache distribuita in memoria ha prestazioni migliori di un database. Inoltre, può fornire una scalabilità lineare nella gestione di maggiori carichi di transazione perché può facilmente aggiungere più server al cluster di cache che un server di database non può fare.
Nonostante tutti questi vantaggi, c'è ancora un problema. Nella maggior parte dei casi, una cache distribuita è ospitata su una serie di server cache dedicati in tutta la rete, quindi l'applicazione deve effettuare viaggi di rete per recuperare i dati. E questo non è veloce come l'accesso ai dati localmente e soprattutto dall'interno del processo di candidatura. È qui che la cache del client torna utile.
In NCache, un cache del cliente mantiene una connessione aperta al cluster di cache distribuita e riceve notifiche di eventi dal cluster di cache ogni volta che i dati della cache del client cambiano lì. Un cluster di cache distribuita conosce la posizione degli elementi di dati tra le cache dei client, quindi le notifiche degli eventi vengono inviate solo alla cache del client pertinente invece di trasmetterle a tutte le cache dei client.
NCache Dettagli Cache cliente Notifiche di eventi nella cache
Come funziona la cache del cliente?
Una cache client non è altro che una cache locale sul tuo server web/applicativo, ma è a conoscenza della cache distribuita oltre ad essere connessa ad essa. Inoltre, una cache client può essere in-process (una cache client esiste all'interno dell'applicazione) o out-of-process. Ciò consente a una cache client di fornire prestazioni di lettura molto più veloci rispetto alla cache distribuita e allo stesso tempo garantire che i dati della cache client siano sempre sincronizzati con la cache distribuita.
Tuttavia, una cache distribuita notifica la cache del client in modo asincrono dopo aver aggiornato correttamente i dati nel cluster di cache distribuita. Tecnicamente, ciò significa che esiste una piccola finestra di tempo (in millisecondi) durante la quale alcuni dati nella cache del client sono più vecchi della cache distribuita. Ora, nella maggior parte dei casi, questo è perfettamente accettabile per le applicazioni. Ma, in alcuni casi, le applicazioni richiedono un'accuratezza dei dati del 100%.
Quindi, per gestire tali situazioni, NCache fornisce anche un modello di sincronizzazione pessimistico per la cache del client. In questo modello, ogni volta che l'applicazione tenta di recuperare qualcosa dalla cache del client, la cache del client verifica prima se la cache distribuita ha una versione più recente dello stesso elemento memorizzato nella cache. In tal caso, la cache del client recupera una versione più recente dalla cache distribuita. Ora, questo viaggio nella cache distribuita ha i suoi costi, ma è comunque più veloce che recuperare l'elemento memorizzato nella cache interamente dalla cache distribuita.
Quando utilizzare una cache client?
Dopo aver letto questo blog, la domanda principale che viene in mente è quando utilizzare la cache di un client e quando non utilizzarla. Bene, la risposta è piuttosto semplice. Se le tue applicazioni eseguono più letture che scritture, usa una cache client, soprattutto se gli stessi elementi vengono ripetuti più e più volte.
Se le tue applicazioni eseguono molti aggiornamenti (o almeno tante quante sono le letture), non utilizzare una cache client perché gli aggiornamenti sono più lenti con una cache client. Ciò accade poiché stai aggiornando due diverse cache ora, la cache del client e la cache distribuita.
Conclusione
Così, NCache ti consente di sfruttare la cache del client con una cache distribuita. Scarica una versione di prova di 60 giorni completamente funzionante di NCache Enterprise e provalo tu stesso.
Hai blog davvero interessante, tenere il passo pubblicazione di tali messaggi informativi!