Panoramica della memorizzazione nella cache Write Through e Write Behind
NCache supporta il caching Write Through, che consente le operazioni di scrittura direttamente sull'origine dati attraverso la cache. In questo modo, puoi sincronizzare la cache e l'origine dati. Nella memorizzazione nella cache Write-Through, NCache aggiorna prima l'archivio cache e quindi applica l'operazione all'origine dati. Ad esempio, se un'applicazione client aggiorna una voce nella cache, allora NCache aggiornerà anche l'origine dati (se Write-Through è abilitato).
Note:
Questa funzione è disponibile solo in NCache Enterprise Edizione.
Per utilizzare la cache write-through nella tua applicazione, devi prima implementare il IWriteThruProvider
interfaccia. NCache utilizzerà internamente questo provider personalizzato per eseguire operazioni di scrittura sull'origine dati. NCache chiamerà il tuo provider dietro le operazioni di scrittura (Aggiungi, Inserisci, Rimuovi/Elimina) chiamate API con Write-Through.
Attualmente NCache fornisce due modalità per la memorizzazione nella cache write-through indicate di seguito:
- Write-Through (aggiorna l'origine dati in modo sincrono)
- Write-Behind (aggiorna l'origine dati in modo asincrono)
Note:
NCache fornisce un contatore di prestazioni Write-thru/sec
per le operazioni di scrittura.
Scrivere attraverso
Nella memorizzazione nella cache Write-Through, un'operazione viene prima applicata all'archivio cache e quindi aggiornata in modo sincrono all'origine dati configurata. Utilizzando Write-Through, le operazioni verranno completate dopo NCache applica tale operazione sull'origine dati. È possibile utilizzare la memorizzazione nella cache write-through se gli aggiornamenti immediati dell'origine dati sono fondamentali ed è necessario aggiornare l'origine dati non appena viene aggiornata la cache.
Scrivi dietro
In Write-Through, a causa delle operazioni sincrone sull'origine dati, la frequenza delle operazioni sarà uguale alla frequenza delle operazioni dell'utente sulla cache. Per le applicazioni con un traffico utente elevato, la frequenza delle operazioni utente sulla cache può essere molto elevata e sovraccaricare l'origine dati. Anche le operazioni di origine dati sincrone possono influire sui tempi di risposta di un'operazione utente.
Per superare questi problemi, è possibile utilizzare Write-Behind invece di Write-Through. In Write-Behind, le operazioni dell'origine dati vengono eseguite in modo asincrono dopo NCache esegue operazioni sull'archivio cache. Dopo aver aggiornato l'archivio cache, queste operazioni vengono messe in coda e successivamente applicate alle origini dati configurate in modo asincrono. Pertanto, l'utilizzo di Write-Behind migliorerà il tempo di risposta delle operazioni della cache.
NCache fornisce diverse impostazioni di configurazione in Write-Behind per controllare il flusso delle operazioni sull'origine dati. Ad esempio, puoi specificare la tariffa a cui NCache applicherà le operazioni write-behind sull'origine dati tramite la limitazione.
strozzamento
Indica il numero di operazioni applicate all'origine dati al secondo. Il valore predefinito per la limitazione è 500 operazioni/sec. È possibile modificare questo valore tramite le impostazioni della sorgente di accompagnamento nel file NCache direttore.
Note:
NCache fornisce un contatore di prestazioni Write-behind/sec
per operazioni Write-Behind.
Modalità di scrittura dietro
NCache consente di applicare le operazioni Write-Behind singolarmente o come batch. Viene mantenuta una coda Write-Behind per le operazioni Write-Behind. Tutte le operazioni Write-Behind verranno accodate in questa coda e successivamente applicate all'origine dati in base alla modalità batch o non batch configurata spiegata di seguito.
Modalità non batch
Per impostazione predefinita, la modalità non batch sarà configurata per le operazioni Write-Behind. In questa modalità, le operazioni nella coda Write-Behind verranno applicate una per una sull'origine dati in base alla velocità di limitazione configurata. Ad esempio, se la velocità di limitazione è di 500 operazioni al secondo, NCache applicherà le operazioni Write-Behind una alla volta all'origine dati e non supererà le 500 operazioni al secondo.
modalità batch
In modalità Batch, viene selezionato un batch/bulk di operazioni in base alla loro operation delay
. Puoi configurare operation delay
per le operazioni Write-Behind, che indica il tempo in millisecondi che ciascuna operazione deve attendere nella coda Write-Behind prima di essere applicata all'origine dati. Per impostazione predefinita, il suo valore è zero.
L'intervallo batch è l'intervallo configurabile in base al quale NCache controlla periodicamente le operazioni scadute per il ritardo dell'operazione nella coda Write-Behind. Ad esempio, se il ritardo di operazione è configurato su 1000 ms e l'intervallo batch su 5 s, NCache controlla le operazioni nella coda Write-Behind ogni 5s e seleziona tutte le operazioni che hanno ritardi operativi scaduti (tutte le operazioni che sono in coda per gli ultimi 1000 millisecondi).
Dopo la selezione delle operazioni in blocco, vengono applicate all'origine dati in base alla velocità di limitazione configurata. Diciamo che un grosso numero di 1000 operazioni viene selezionato dalla coda Write-Behind, che vengono quindi applicate all'origine dati in un batch di 500 operazioni (se la velocità di limitazione è 500 operazioni/sec) come operazione massima applicata all'origine dati al secondo non può superare il valore di limitazione configurato.
È possibile specificare un tempo di ritardo dell'operazione che va da secondi a giorni e mesi. In questo modo, puoi mettere in pausa le tue operazioni sull'origine dati in un periodo di tempo configurabile. NCache fornisce anche contatori delle prestazioni per la coda write-behind, il conteggio delle operazioni e il conteggio delle operazioni batch correnti. Per Write-Behind, se il batching è abilitato, le operazioni pronte per essere eseguite sull'origine dati vengono rimosse dalla coda Write-Behind.
Note:
Il numero di operazioni rimosse dalla coda nell'intervallo batch corrente verrà visualizzato dal contatore del conteggio delle operazioni batch correnti.
Supporto Hot Apply per la configurazione write-behind
NCache supporta le impostazioni Write-Behind applicabili a caldo che consentono di modificare le configurazioni Write-Behind in fase di esecuzione, senza arrestare la cache. È possibile modificare gli attributi configurabili Write-Behind tramite il file NCache Manager e NCache incorporerà queste modifiche in modo dinamico.
Nel supporto per l'applicazione a caldo, puoi modificare la modalità Write-Behind da batch a non batch e viceversa. Ad esempio, se hai modificato la modalità batch in non batch, allora NCache ignorerà il valore del ritardo dell'operazione e avvierà l'esecuzione delle operazioni singolarmente. Inoltre, è possibile modificare la velocità di limitazione in fase di esecuzione in base alle proprie esigenze allo stesso modo, il ritardo dell'operazione, l'intervallo di batch, il limite della coda delle operazioni non riuscite e il rapporto di rimozione delle operazioni non riuscite possono anche cambiare in fase di esecuzione.
avvertimento
È possibile solo aumentare il valore del limite della coda delle operazioni non riuscite; Altrimenti, NCache utilizzerà il suo valore predefinito per ulteriori operazioni.
Write-Behind in ambiente cluster
Poiché una coda Write-Behind viene mantenuta per le operazioni Write-Behind, un monitor thread dedicato separato esegue la sua operazione. I dettagli del livello di topologia per Write-Behind sono indicati di seguito:
Topologia replicata: La coda Write-Behind viene mantenuta su tutti i nodi, ma il processore asincrono Write-Behind è presente solo sul nodo coordinatore. Significa che tutte le operazioni Write-Behind vengono eseguite tramite questo nodo e replicate su altre code di nodi a livello di cluster. In questo modo, se un nodo è inattivo, il nodo coordinatore successivo esegue tutte le restanti operazioni di write behind.
Topologia replicata partizionata: La coda Write-Behind viene mantenuta su ogni nodo attivo e replicata anche nelle repliche corrispondenti. Ogni nodo è responsabile della propria operazione di scrittura dietro l'origine dati.
Topologia specchiata: La coda Write-Behind viene mantenuta sia sui nodi attivi che passivi, ma solo il nodo attivo è responsabile dell'esecuzione delle operazioni Write-Behind. Allo stesso modo, se il nodo attivo è inattivo, il nodo passivo diventa attivo ed esegue le restanti operazioni Write-Behind.
Topologia partizionata: La coda Write-Behind viene mantenuta su ogni partizione e ogni nodo è responsabile delle sue operazioni Write-Behind sull'origine dati.
Risultato dell'operazione di memorizzazione nella cache
NCache offre la flessibilità di sincronizzare le operazioni di scrittura nella cache in base al risultato dell'operazione. Dopo aver applicato un'operazione (Aggiungi/Inserisci) sull'origine dati, è possibile specificare lo stato dell'operazione in base alla quale NCache sincronizzerà il cache store. Ad esempio, in caso di errore nel funzionamento dell'origine dati, puoi decidere di rimuovere i dati dalla cache o di mantenerli. Puoi anche riprovare l'operazione sull'origine dati. Per questo è necessario specificare Success
/Failure
/FailureRetry
/FailureDontRemove
as
OperationResult.Status
of OperationResult
. Questo è fornito sia nella cache write-through che in quella write-behind.
Stato operativo dell'origine dati e relative azioni di NCache sono descritti di seguito:
Storie Di: Ciò significa che l'operazione sull'origine dati è riuscita e l'elemento è stato aggiunto all'origine dati in tal modo NCache lo manterrà anche nella cache.
Fallimento: Ciò significa che l'operazione dell'origine dati non è riuscita e l'elemento non può essere aggiunto all'origine dati, quindi NCache lo rimuoverà anche dalla cache.
FallimentoNon rimuovere: Ciò significa che l'operazione sull'origine dati non è riuscita e l'elemento non può essere aggiunto all'origine dati, ma NCache lo manterrà nella cache.
Fallimento Riprova: Ciò significa che l'operazione dell'origine dati non è riuscita e l'elemento non può essere aggiunto all'origine dati, quindi NCache manterrà l'elemento nella cache e riproverà. I tentativi verranno eseguiti come operazioni di write-behind.
Ripetere le operazioni non riuscite
NCache consente di riprovare le operazioni in Write-Through/Write-Behind nel caso in cui non siano riuscite nell'origine dati. A tale scopo, se si abilita l'operazione, riprovare NCache riproverà l'operazione sull'origine dati. In caso di Write-Through o Write-Behind, tutte le operazioni di ripetizione verranno accodate alla coda Write-Behind, il che significa che un'operazione di ripetizione di Write-Through verrà ripetuta in modo asincrono come operazione di Write-Behind.
Note:
NCache fornisce anche un contatore di prestazioni per Datasource failed operations/sec
. Operazioni di scrittura eseguite sulla restituzione dell'origine dati Failure
/FailureRetry
/FailureDontRemove
as OperationResult.Status
of
OperationResult
vengono conteggiati al secondo da questo contatore.
NCache consente di limitare il numero di operazioni non riuscite da ritentare. In una situazione del genere, menzionerai il limite della coda delle operazioni non riuscite tramite il file
NCache Manager e se tale limite viene superato, puoi eliminare le operazioni non riuscite tramite un rapporto di eliminazione configurabile. Qui, NCache eliminerà la maggior parte delle operazioni ripetute quando la coda dei tentativi è piena. Ogni operazione ha un RetryCount
proprietà ad esso associata, che viene incrementata a ogni operazione ripetuta sull'origine dati.
Per questo, NCache fornisce un contatore di prestazioni per
Write-behind failure retry count
ed Write-behind evictions/sec
. Write-behind failure retry count
mostra il numero di operazioni messe in coda per i tentativi. Restituzione delle operazioni di scrittura dell'origine dati FailureRetry
as Status
in OperationResult
verrà rimesso in coda per un nuovo tentativo. Mentre, Write-behind evictions/sec
contatore mostra il numero di tentativi eliminati al secondo.
Aggiornamento della cache dopo l'operazione sull'origine dati
Come affermato in precedenza, nella memorizzazione nella cache Write-Through, l'operazione viene eseguita prima sull'archivio cache e quindi sull'origine dati. Possono esistere scenari in cui dopo aver eseguito operazioni sull'origine dati, i dati vengono modificati, ad esempio nel caso di colonne Identity, il suo valore può essere modificato dall'operazione dell'origine dati. In una situazione del genere, i dati potrebbero diventare incoerenti nella cache e nell'origine dati. Per gestire questo, NCache consente di specificare se aggiornare i dati nella cache dopo le operazioni sull'origine dati o meno. Puoi abilitare UpdateInNCache
flag per eseguire nuovamente l'operazione (Aggiungi/Inserisci) sull'archivio cache per sincronizzarlo con l'origine dati, quindi aggiornare le operazioni nell'archivio cache in modo sincrono tramite Write-Through o in modo asincrono tramite la memorizzazione nella cache Write-Behind.
Note:
NCache fornisce anche un contatore delle prestazioni Datasource updates/sec
che visualizza il numero di operazioni di aggiornamento al secondo nella cache dopo le operazioni di scrittura dell'origine dati.
In questa sezione
Configura provider di scrittura passante
Spiega l'interfaccia del provider di scrittura e fornisce un'implementazione di esempio per l'interfaccia.
Write-Thru con operazioni di cache
Fornisce esempi per utilizzare Write-Through con operazioni di base in NCache.
Write-behind con operazioni di cache
Fornisce esempi per utilizzare Write-Behind con operazioni di base in NCache.
Monitorare i contatori di scrittura
Descrive i contatori di prestazioni forniti da NCache per monitorare la memorizzazione nella cache di scrittura.