Proprietà e panoramica del caricatore e dell'aggiornamento della cache
NCache fornisce un caricatore di cache di avvio per precaricare la cache con i dati essenziali all'avvio. Questo meccanismo è fondamentale negli scenari in cui un'applicazione richiede set di dati specifici immediatamente dopo l'inizio dell'esecuzione.
Ad esempio, immagina un sito di streaming video con centinaia di video che devono essere disponibili per l'utente nel momento in cui l'utente accede al sito. Qui, la cache può essere precaricata con i video esistenti all'avvio della cache invece di aggiungere manualmente i dati.
Note:
A volte, il caricatore di cache potrebbe non riuscire a caricare i dati correttamente a causa di un problema di connettività con l'origine dati primaria o di un errore durante l'esecuzione dell'implementazione personalizzata del caricatore di cache. Per identificare tale errore/eccezione, controllare i log del servizio di esecuzione.
Caricare la cache con i dati all'avvio può essere molto utile. In questo modo, è possibile evitare problemi di prestazioni all'avvio della cache a causa di una cache vuota, con conseguenti frequenti richieste di dati al database (che è lento). Il NCache La funzione Cache Startup Loader ti aiuterà a precaricare la tua cache con i dati di tua scelta al momento dell'avvio.
Nonostante i vantaggi del pre-caricamento dei dati, i dati caricati nella cache diventano obsoleti. L'utente carica i dati rilevanti all'avvio della cache e qualsiasi modifica che si verifica nell'origine dati la rende obsoleta. Per evitare questa invalidazione, NCache fornisce un'altra funzionalità chiamata Aggiornamento della cache. Il Cache Refresher è responsabile della sincronizzazione dei dati caricati nella cache con i dati aggiornati nell'origine dati.
Caricatore di cache e proprietà di aggiornamento
I NCache Cache Loader e Refresher sono funzionalità essenziali per migliorare le prestazioni complessive dell'applicazione, soprattutto all'avvio della cache. Come ogni funzionalità, anche queste funzionalità hanno le rispettive proprietà. Spieghiamo queste proprietà di seguito:
NCache Servizio di esecuzione
Nel precedente NCache versioni, la cache e il Cache Loader venivano eseguiti nello stesso processo, sovraccaricando il processo della cache, in particolare durante il caricamento. Questo stress ha comportato un temporaneo degrado delle prestazioni della cache complessiva.
Quindi, per le topologie OutProc, NCache ha un dedicato NCache Servizio di esecuzione (precedentemente noto come servizio Loader) per gestire le attività e caricare i dati dall'origine dati nelle cache all'avvio della cache. Questo servizio soddisfa diverse responsabilità nelle edizioni .NET e Java. Nell'edizione .NET, gestisce Cache Loader e Refresher. Nella Java Edition, invece, il servizio è responsabile della gestione del caricatore di cache, dell'aggiornamento, dei provider di origini dati e della pubblicazione dei contatori JMX.
In alternativa, in una topologia cluster, ogni nodo ha un servizio dedicato responsabile del caricamento dei dati nella propria cache. Tuttavia, all'interno della topologia InProc, l'attività viene comunque eseguita nello stesso processo.
Dataset
Per le topologie a cluster, se i dati caricati su un singolo nodo occupano una notevole quantità di tempo, NCache consente la distribuzione del carico di dati tra i nodi del cluster. I dati vengono distribuiti in base ai set di dati forniti dall'utente per ogni singolo nodo. Ogni nodo ha NCache Servizio di esecuzione assegnato per caricare i dati in base ai set di dati. Fondamentalmente, un set di dati è un modo per raggruppare dati simili da caricare insieme.
Assegnazione del set di dati ai server di cache in fase di runtime
Note:
NCache assegna internamente i set di dati ai nodi, garantendo che due nodi non finiscano per caricare gli stessi dati nella cache. Questa assegnazione consente inoltre di caricare un enorme volume di dati in meno tempo.
Il nodo coordinatore distribuisce i set di dati tra i nodi del cluster in modalità round robin. Pertanto, a ciascuno dei server viene assegnato un set di dati dall'elenco. Quando uno dei nodi termina il caricamento dei dati rispetto al proprio set di dati, riceve il successivo set di dati da caricare. In sostanza, se il numero di set di dati di distribuzione è maggiore del numero di nodi, NCache assegnerà un set di dati a ciascun nodo e, quando non ci sono più nodi disponibili, assegna il set di dati successivo al primo nodo disponibile (che ha terminato il caricamento dei dati).
Supponiamo che l'utente desideri caricare dati specifici dal database Northwind in una cache in cluster di 3 nodi all'avvio, quindi le prestazioni del caricatore della cache saranno influenzate dal numero di set di dati assegnati. Discutiamo di questo comportamento di seguito:
5 set di dati da caricare: L'utente alloca 5 set di dati ( , Ordina, Prodotti, I dipendentie Fornitori) al caricatore. Il nodo coordinatore assegna quindi i set di dati ai nodi in modalità round robin: al nodo 1, Ordini al nodo2 e Prodotti al nodo3. Non appena un nodo termina di caricare i dati, il coordinatore assegna il set di dati successivo, ovvero I dipendenti ed eventualmente Fornitori al successivo nodo disponibile.
3 set di dati da caricare: L'utente assegna 3 set di dati (Clienti, Prodottie Ordini) al Caricatore, il che significa che ogni nodo è responsabile del set di dati ad esso assegnato, quindi caricherà i dati in base al set di dati garantendo allo stesso tempo un'equa distribuzione.
2 set di dati da caricare: L'utente assegna 2 set di dati (Clienti ed Prodotti) al caricatore. Poiché il cluster è composto da tre nodi, il terzo nodo sarà inattivo durante il processo di caricamento. Ecco perché preferisce che il numero di set di dati sia uguale o maggiore del numero di nodi, garantendo il massimo utilizzo.
Programmazione del set di dati
I set di dati richiedono una pianificazione per l'aggiornamento. Perciò, NCache fornisce un'opzione di pianificazione che decide l'intervallo di tempo dopo il quale aggiorna i dati della cache. In questo momento, l'Intervallo di aggiornamento verifica se i set di dati vengono aggiornati, aggiornando/aggiornando così i dati conseguenti nella cache. Le quattro diverse opzioni di pianificazione fornite con Cache Refresher funzionano come segue:
Intervallo giornaliero: l'intervallo giornaliero garantisce che un set di dati venga aggiornato a un intervallo prestabilito dopo l'avvio della cache. Il valore dell'intervallo è in minuti. Ad esempio, 20 minuti significa che il set di dati viene aggiornato ogni 20 minuti.
Orario giornaliero: l'opzione dell'ora giornaliera garantisce che un set di dati venga aggiornato ogni giorno all'ora specifica fornita dall'utente. A differenza degli intervalli giornalieri con un intervallo massimo di 60 minuti, in genere sono intervallati da 24 ore e non si basano sull'avvio della cache per l'inizio. Viene generalmente utilizzato quando i set di dati non vengono aggiornati con la stessa frequenza di quelli con intervalli giornalieri.
: l'opzione settimanale garantisce che un set di dati venga aggiornato in giorni specifici ogni settimana all'ora specificata dall'utente. Ad esempio, se desideri che i set di dati caricati vengano aggiornati ogni lunedì, giovedì e sabato esattamente a mezzanotte, devi impostare la pianificazione settimanale dei set di dati.
Mensile: l'opzione mensile garantisce che un set di dati venga aggiornato in uno o più giorni specificati ogni mese e in uno o più giorni feriali alla settimana. Ad esempio, è possibile specificare l'aggiornamento del set di dati in modo che il servizio lo aggiorni ogni lunedì di ogni prima e ultima settimana del mese.
L'espressione di pianificazione ha il formato week:days:hours:minutes
per specificare l'espressione di pianificazione.
- Le settimane possono essere comprese tra 1 e 4, dove 1 rappresenta la prima settimana del mese.
- I giorni possono essere 1-7 mostrando i giorni della settimana. Le ore ei minuti possono essere in base all'ora del giorno per la programmazione. È possibile specificare più giorni della settimana aggiungendo i giorni separati da una virgola.
- Gli utenti possono selezionare più settimane da un mese per la programmazione.
Facciamo alcuni esempi per capire come funziona l'espressione scheduling:
L'espressione
1,2:2:00:00
per pianificazione si intende l'aggiornamento del dataset il 2° giorno della prima e della seconda settimana del mese a mezzanotte.L'espressione
1:1,2,7:15:30
per la pianificazione mostra l'aggiornamento dei set di dati il primo, il secondo e il settimo giorno della prima settimana del mese (lunedì, martedì e domenica) alle 3:30
Meccanismo di caricamento
L'utente specifica l'implementazione di quali oggetti caricare dall'origine dati master. Ogni singolo dato esiste come completo CacheItem
- aggiunto alla cache all'avvio della cache.
Tentativi di caricamento della cache
Se un'operazione fallisce durante il caricamento della cache, NCache lo esegue prima di passare al successivo. Per impostazione predefinita, NCache non ritenta l'operazione non riuscita. Tuttavia, puoi abilitarlo tramite il NCache Centro di gestione.
Intervallo di tentativi del caricatore di cache
Se l'utente sceglie di abilitare i tentativi per le operazioni non riuscite, può anche specificare l'intervallo di tempo di attesa (in secondi) prima di ritentare l'operazione non riuscita. L'intervallo è 0 per impostazione predefinita. Tuttavia, è configurabile dall'utente tramite il file NCache Centro di gestione.
Intervallo di aggiornamento
Per verificare quali set di dati necessitano di aggiornamento/aggiornamento, un thread viene eseguito dopo un tempo specifico, noto come intervallo di aggiornamento. Per impostazione predefinita, l'intervallo di aggiornamento è 900 secondi. Il valore minimo per questo intervallo è 1 secondo e il massimo è 3600 secondi. Gli utenti possono configurare l'intervallo di aggiornamento tramite NCache Centro di gestione.
Aggiornamento del set di dati su richiesta
L'utente ha anche la possibilità di aggiornare manualmente i propri set di dati tramite il Invoke-RefresherDataset cmdlet. Tramite questo cmdlet, l'utente può aggiornare i propri set di dati immediatamente o entro le 24 ore successive utilizzando l'estensione RefreshPreference
opzione di questo cmdlet. Questa opzione identifica quando verrà eseguito l'aggiornamento su richiesta in base al fatto che il processo provochi o meno un degrado. In caso contrario, il set di dati lo farà RefreshNow
. In caso affermativo, il set di dati verrà aggiornato al successivo orario pianificato tramite il file RefreshOnNextTimeOfDay
opzione.
Vedere anche
Componenti di Cache Startup Loader e Refresher
Fornitori di origini dati (fonte di supporto)
Upgrade NCache versioni