Progettare una soluzione di memorizzazione nella cache
La memorizzazione nella cache è una tecnica comune che ha l'obiettivo di migliorare le prestazioni e la scalabilità del sistema. La memorizzazione nella cache copia temporaneamente i dati usati di frequente in una risorsa di archiviazione veloce vicina all'applicazione. Se questa risorsa di archiviazione rapida dei dati si trova più vicina all'applicazione rispetto all'archivio dati originale, la memorizzazione nella cache può migliorare significativamente i tempi di risposta per le applicazioni client fornendo i dati più rapidamente.
La memorizzazione nella cache è più efficace quando un'istanza di un client legge ripetutamente gli stessi dati, soprattutto se per l'archivio dati originale si verificano le condizioni seguenti:
- L'archivio dati originale rimane relativamente statico.
- È lento rispetto alla velocità della cache.
- È soggetto a un elevato livello di contesa.
- È lontano e la latenza di rete può causare lentezza nell'accesso.
Si supponga che Tailwind Traders stia aggiungendo una nuova funzionalità all'applicazione demo del prodotto per aumentare il traffico dei clienti al sito Web di vendita al dettaglio. La funzionalità evento aggiunge un banner all'inizio dell'app per dispositivi mobili per annunciare offerte speciali e sconti di prodotto limitati. Le nuove offerte vengono pubblicate ogni ora e la disponibilità rimanente del prodotto per ogni offerta viene aggiornata dopo l'elaborazione di ogni ordine. Il primo cliente a rispondere a una nuova offerta riceve uno sconto doppio! I clienti sono invitati a controllare frequentemente l'app per dispositivi mobili per gli aggiornamenti alle offerte e alla disponibilità del prodotto. Per implementare questa nuova funzionalità, è necessario progettare una soluzione di memorizzazione nella cache che possa supportare operazioni di lettura e scrittura veloci in memoria.
Cose da sapere su cache di Azure per Redis
Cache di Azure per Redis offre un archivio dati in memoria basato sul software Redis. Redis migliora notevolmente le prestazioni e la scalabilità di un'applicazione che usa archivi dati back-end. È in grado di elaborare grandi volumi di richieste di applicazioni mantenendo nella memoria del server i dati a cui si accede di frequente, che possono essere scritti e letti rapidamente. Redis offre una soluzione di archiviazione dati strategica a bassa latenza e velocità effettiva elevata per le applicazioni moderne.
Esaminiamo le caratteristiche del servizio:
Cache di Azure per Redis offre due opzioni di implementazione per gli sviluppatori:
- Redis open source (OSS Redis)
- Un prodotto commerciale offerto da Redis Labs (Redis Enterprise) come servizio gestito
La cache di Azure per Redis offre istanze del server Redis sicure e dedicate e compatibilità completa con l'API Redis.
È possibile usare la cache di Azure per Redis come cache di dati o contenuti distribuita, archivio di sessioni o broker di messaggi.
Distribuire cache di Azure per Redis come un servizio autonomo o con altri servizi di database di Azure, ad esempio Azure SQL o Azure Cosmos DB.
Funzionamento di Cache Redis di Azure
Cache di Azure per Redis è ospitato in Azure e utilizzabile da qualsiasi applicazione all'interno o all'esterno di Azure. Nella figura seguente viene illustrato il funzionamento di cache di Azure per Redis nelle applicazioni.
L'istanza dell'applicazione A ha una cache con uno snapshot dei dati al momento X
. Recupera i dati al momento X
e li memorizza nella cache in memoria. L'istanza dell'applicazione B ha una cache con uno snapshot dei dati al momento Y
. Recupera i dati al momento Y
e li memorizza nella cache in memoria. Le informazioni nel database SQL cambiano tra le X
e le Y
.
Aspetti da considerare quando si usa cache di Azure per Redis
La cache di Azure per Redis migliora le prestazioni delle applicazioni supportando modelli di architettura delle applicazioni comuni. Quando si esaminano i modelli seguenti, prendere in considerazione quelli che potrebbero essere visualizzati nell'architettura dell'applicazione Tailwind Traders. Si pensi a come cache di Azure per Redis può soddisfare i requisiti del modello.
Modello | Scenario | Soluzione |
---|---|---|
Cache dei dati | Spesso i database sono troppo grandi per essere caricati direttamente in una cache. | È prassi comune usare il modello cache-aside per caricare dati nella cache solo in base alle esigenze. Quando il sistema apporta modifiche ai dati, può anche aggiornare la cache, che viene quindi distribuita ad altri client. Inoltre, il sistema può impostare una scadenza per i dati oppure usare criteri di rimozione per attivare gli aggiornamenti dei dati nella cache. |
Cache del contenuto | Molte pagine Web vengono generate da modelli che usano contenuto statico, ad esempio intestazioni, piè di pagina e banner. Questi elementi statici non devono cambiare spesso. | L'uso di una cache in memoria consente di accedere rapidamente al contenuto statico rispetto agli archivi dati back-end. Questo modello riduce il tempo di elaborazione e il carico del server, consentendo ai server Web di essere più reattivi. Una cache dei contenuti permette inoltre di ridurre il numero di server necessari per gestire i carichi. Cache di Azure per Redis fornisce il provider di cache di output per Redis per supportare questo modello con ASP.NET. |
Archivio di sessioni | Un archivio di sessione viene comunemente usato con i carrelli acquisti e altri dati della cronologia degli utenti che un'applicazione Web potrebbe voler associare ai cookie degli utenti. L'archiviazione di troppe informazioni in un cookie può influire negativamente sulle prestazioni man mano che le dimensioni del cookie aumentano e il cookie viene passato e convalidato con ogni richiesta. | Una tipica soluzione usa il cookie come chiave per eseguire query sui dati in un database. L'uso di una cache in memoria, come la cache di Azure per Redis, per associare informazioni a un utente è più veloce rispetto all'interazione con un database relazionale completo. |
Accodamento di messaggi e processi | Alcune operazioni dell'applicazione richiedono molto tempo per completarsi, il che potrebbero impedire l'avvio di altri processi o messaggi non correlati. | Spesso le applicazioni aggiungono le attività a una coda quando l'esecuzione delle operazioni associate alla richiesta richiede tempo. Le operazioni a esecuzione prolungata vengono accodate per essere elaborate in sequenza, spesso da un altro server. Questo metodo di differimento del lavoro è noto come accodamento di attività. Cache di Azure per Redis fornisce una coda distribuita per abilitare questo modello nell'applicazione. |
Transazioni distribuite | Talvolta le applicazioni richiedono una serie di comandi su un archivio dati back-end per l'esecuzione come singola operazione atomica. Tutti i comandi devono avere esito positivo o essere riportati allo stato iniziale. | La cache di Azure per Redis supporta l'esecuzione di un batch di comandi come singola transazione. |