Condividi tramite


Notifiche in Cache nel ruolo di Azure

Importante

Microsoft consiglia tutti i nuovi sviluppi di usare Cache Redis di Azure. Per la documentazione e le indicazioni correnti sulla scelta di un'offerta di Cache di Azure, vedere Quale offerta di Cache di Azure è adatta per l'utente?

Mediante le notifiche della cache di Azure le applicazioni possono ricevere notifiche asincrone quando si esegue una serie di operazioni cache sul cluster di cache. Le notifiche della cache consentono inoltre l'invalidamento automatico degli oggetti memorizzati nella cache locale.

Per consentire la ricezione di notifiche della cache in modo asincrono, aggiungere all'applicazione un callback di notifica della cache. Quando si aggiunge il callback, vengono definiti i tipi di operazioni della cache che attivano una notifica della cache e il metodo dell'applicazione che deve essere chiamato quando si verificano le operazioni specificate. Una cache denominata deve fornire il consenso esplicito e abilitare le notifiche della cache.

Attivazione di notifiche della cache

Queste operazioni della cache vengono definite dai membri della classe DataCacheOperations .

Operazioni sulle aree

L'applicazione può ricevere notifiche della cache quando vengono effettuate le seguenti operazioni della cache su un'area:

Operazioni sugli elementi

L'applicazione può ricevere notifiche della cache quando vengono effettuate le seguenti operazioni della cache su un oggetto memorizzato nella cache (indicato come elemento all'interno della cache).

  • AddItem: quando un elemento viene aggiunto alla cache.

  • ReplaceItem: quando un elemento viene sostituito nella cache.

  • RemoveItem: quando un elemento viene rimosso dalla cache.

Nota

Queste operazioni sugli elementi non dipendono dal fatto che si siano verificate o meno all'interno di un'area. È possibile scegliere di limitare l'ambito di notifica del callback a una determinata area. Questa procedura viene illustrata nella sezione Ambito di notifica del presente documento.

Ambito di notifica

A seconda dell'attività e delle esigenze dell'applicazione, è possibile ignorare gli eventi relativi ad ogni oggetto e area nell'intera cache. È possibile restringere l'ambito delle notifiche dal livello di cache al livello di area e di elemento. L'ambito di notifica selezionato quando si aggiunge un callback influisce considerevolmente sul tipo di notifiche della cache ricevute.

A livello di cache, è possibile che l'applicazione riceva notifiche relative a tutte le operazioni della cache da tutti gli oggetti e le aree contenuti nella cache. A livello di area, l'applicazione riceve solo le notifiche relative alle operazioni della cache provenienti da una singola area e dagli oggetti in essa contenuti. A livello di elemento, l'applicazione riceve solo le notifiche relative alle operazioni della cache riguardanti un singolo oggetto.

Per specificare l'ambito di notifica desiderato, scegliere uno dei tre metodi seguenti per aggiungere un callback di notifica della cache:

  • AddCacheLevelCallback: quando si vuole ricevere una notifica delle operazioni di cache basate su aree e elementi che si verificano in tutte le aree e gli elementi.

  • AddRegionLevelCallback: quando si vuole ricevere una notifica delle operazioni di cache basate su aree e elementi che si verificano in un'area specifica.

  • AddItemLevelCallback: quando si vuole ricevere una notifica delle operazioni della cache basate su elementi che si verificano su un elemento specifico.

Ordine delle notifiche

L'ordine delle notifiche ricevute dal client della cache è garantito nel contesto di una singola area. Si supponga, ad esempio, di aver creato un'area denominata RegionA. Poiché tutti i dati inseriti in un'area della cache sono limitati alla stessa area, tutte le operazioni della cache relative all'area RegionA (ambito di notifica a livello di area) arrivano al client della cache nell'ordine reciprocamente corretto. Non è garantito che le operazioni della cache per area e per elemento che si sono verificate su altri host della cache giungano nell'ordine corretto in relazione alle operazioni che si sono verificate nell'area RegionA.

In termini di prestazioni, non è possibile garantire l'ordine delle notifiche che riguardano più aree o più oggetti non archiviati nella stessa area.

Le informazioni sulla versione per gli eventi dell'elemento, sotto forma di oggetto DataCacheItemVersion , vengono passate al metodo richiamato dalla notifica della cache con il version parametro . Questo oggetto DataCacheItemVersion corrisponde alla versione dell'oggetto che ha attivato l'evento dell'elemento. Usando il metodo CompareTo , è possibile confrontare le versioni per determinare quali operazioni della cache sono state eseguite per prime.

Nota

I confronti tra versioni sono utili solo quando si esegue il confronto tra versioni dello stesso elemento specificato con la stessa chiave. Non è possibile dedurre l'ordine confrontando le versioni da chiavi diverse; Il metodo CompareTo può restituire un risultato, ma il risultato è valido solo per le versioni della stessa chiave.

Intervallo di polling

Quando si usano le notifiche della cache, l'applicazione effettua un controllo con il cluster di cache a intervalli regolari per verificare se sono disponibili nuove notifiche. Tale intervallo, definito intervallo di polling, corrisponde a 300 secondi per impostazione predefinita. È possibile impostare un valore inferiore per le applicazioni che eseguono frequentemente operazioni di scrittura, ma per le cache che non cambiano spesso, un intervallo maggiore è più appropriato. Il valore predefinito di 300 secondi è appropriato per la maggior parte delle cache generali.

L'intervallo di polling viene specificato in unità di secondi nelle impostazioni di configurazione dell'applicazione. Per definire un intervallo specifico, è possibile usare l'attributo pollInterval dell'elemento clientNotifications nel file di configurazione dell'applicazione. È anche possibile specificare un intervallo di polling specifico a livello di codice con la NotificationProperties proprietà dell'oggetto DataCacheFactoryConfiguration .

In caso di perdita delle notifiche

Gli host della cache possono conservare in memoria solo un determinato numero di operazioni della cache. È possibile che alcuni client della cache ricevano le notifiche solo dopo che sono state troncate nelle code degli host della cache. È inoltre possibile che i client della cache non ricevano le notifiche quando i dati vengono persi a causa di un errore in un server di cache mentre il resto del cluster continua a funzionare. In questi casi, il client della cache può rilevare la perdita di alcune notifiche della cache mediante una notifica di errore. L'applicazione può aggiungere un callback per ricevere notifiche di errore usando il metodo AddFailureNotificationCallback . Per altre informazioni, vedere Procedura: Aggiungere un callback di notifica degli errori

In caso di perdita del cluster di cache

È fondamentale distinguere tra la perdita di notifiche e la perdita del cluster di cache. Se l'applicazione perde una o più notifiche, può rilevare questa perdita grazie a una notifica di errore. Se invece l'intero cluster di cache viene arrestato, riavviato o perso, non verrà attivata alcuna notifica. Al contrario, il client della cache genererà eccezioni al successivo tentativo di usare la cache se non sarà in grado di connettersi al cluster. Eventi cluster di cache come la creazione o l'eliminazione di cache non vengono segnalati da notifiche. Se la cache viene eliminata dal server dopo la registrazione delle notifiche, non si riceve più alcuna notifica. Non è possibile distinguere tra un problema di cache non esistente e un problema di operazioni non eseguite su una cache.

Nota

Le notifiche della cache segnalano solo modifiche relative ai dati apportate alle aree e agli elementi della cache nel cluster, ma non segnalano eventi relativi al cluster stesso.

Abilitazione delle notifiche della cache

Le notifiche della cache vengono configurate a livello di cache nelle impostazioni di configurazione del cluster. Come proprietà della cache, l'utente può abilitare questa funzionalità quando crea la cache per la prima volta. Per impostazione predefinita, la funzionalità relativa alle notifiche della cache è disabilitata quando si crea una nuova cache.

Per aggiungere un callback per la ricezione della notifiche della cache, non è necessario definire alcuna impostazione di configurazione dell'applicazione. È possibile usare le impostazioni di configurazione dell'applicazione per specificare un intervallo di polling. L'intervallo di polling predefinito è di 300 secondi. Se si desidera una durata diversa, utilizzare l'elemento clientNotification nel file di configurazione dell'applicazione basato su XML o specificare l'intervallo desiderato a livello di codice con la NotificationsProperties proprietà dell'oggetto DataCacheFactoryConfiguration .

Uso delle notifiche della cache

Dopo aver abilitato le notifiche della cache, sono disponibili tre attività correlate all'uso delle notifiche della cache: aggiunta di callback di notifica della cache, aggiunta di un callback di notifica degli errori e rimozione dei callback di notifica della cache. Per una descrizione delle procedure relative a ogni attività, vedere la parte restante della documentazione.

Vedere anche

Concetti

Funzionalità di Cache nel ruolo in Cache di Azure