Caricatore di cache e aggiornamento in NCache

NCache è una cache distribuita in memoria estremamente veloce e scalabile per .NET e memorizza nella cache i dati delle applicazioni per ridurre i costosi viaggi del database. Uso NCache per rimuovere i colli di bottiglia delle prestazioni relativi all'archiviazione dei dati e al database.

Man mano che la dimensione della cache aumenta e si memorizzano sempre più dati di riferimento/ricerca nella cache, si deve affrontare il problema della necessità di riempire una cache vuota all'avvio. Poi c'è il problema di mantenere aggiornati questi dati memorizzati nella cache e anche di aggiungervi più dati su base regolare per mantenere interi set di dati nella cache. E, per fare tutto questo, non solo devi sviluppare un'applicazione personalizzata, ma anche ospitarla da qualche parte e assicurarti che funzioni sempre all'avvio della cache e anche a intervalli programmati.

Questo è un sacco di gestione extra e mal di testa NCache prende il sopravvento per te attraverso la sua potente funzione Cache Loader / Refresher. NCache ti consente di sviluppare codice lato server personalizzato e registrarlo per Cache Loader e Refresher.

NCache ti fornisce quanto segue:

  1. Caricatore di cache (distribuito e parallelo): puoi sviluppare un Cache Loader come codice lato server che viene distribuito ed eseguito su tutti i server cache nel cluster. Quindi, all'avvio della cache, NCache chiama questo Cache Loader su ciascun server cache in parallelo per andare a leggere la sua parte di dati (chiamati set di dati) dal tuo database / origine dati e caricarlo nella cache. Cache Loader viene eseguito in parallelo su tutti i server cache per distribuire il lavoro di caricamento dei dati in più set di dati paralleli.
  2. Aggiornamento cache (distribuito e parallelo): puoi sviluppare un Cache Refresher come codice lato server che viene distribuito ed eseguito su tutti i server cache nel cluster. Quindi, NCache chiama il tuo Cache Refresher su base regolare (programmazione) per andare a ricevere aggiornamenti o nuovi dati dal tuo database/origine dati e metterlo nella cache. Puoi anche chiamare Cache Refresher su richiesta. Cache Refresher viene eseguito in parallelo su tutti i server cache per distribuire il lavoro di caricamento dei dati in più set di dati paralleli.
Caricatore di cache e aggiornamento in NCache

Vantaggi del caricatore/aggiornamento della cache

Ecco alcuni vantaggi dell'utilizzo della funzionalità Cache Loader/Refresher in NCache.

  1. Caricamento/aggiornamento parallelo dei set di dati: se la tua cache è grande, caricarla o aggiornarla può richiedere del tempo. E, se scrivi tu stesso il codice per questo scopo, molto probabilmente lo eseguirai da un singolo computer e quindi caricherà tutti i dati in sequenza. Ma, NCache distribuisce ed esegue Cache Loader / Refresher su tutti i server cache. Di conseguenza, il caricamento dei dati è parallelo e molto più veloce.
  2. Elevata disponibilità del caricatore/aggiornamento della cache: NCache distribuisce Cache Loader / Refresher su tutti i server cache. Ciò significa che se un server cache si interrompe, il caricamento/l'aggiornamento non si interrompe perché è in esecuzione su altri server cache. E, quando aggiungi un nuovo server cache al cluster, NCache rende disponibile anche Cache Loader / Refresher, aumentando così l'elevata disponibilità. Questo è qualcosa che non puoi ottenere se hai scritto questo codice e eseguito tu stesso.
  3. NCache Lo ospita per te: se dovessi sviluppare ed eseguire questo codice tu stesso, dovresti assicurarti che funzioni sempre anche se il server su cui stai eseguendo quel codice non funziona. Questo perché la tua cache dipende da questo codice per rimanere aggiornata e completa. E questo è un sacco di lavoro per gestire una cosa del genere in produzione. Per fortuna, NCache si assume questa responsabilità per te e ospita Cache Loader / Refresher per te su tutti i server cache. NCache si assicura inoltre che questo codice venga eseguito su più server per un'elevata disponibilità, come spiegato sopra.
  4. Il caricatore/aggiornamento funziona molto vicino alla cache: come sapete, NCache distribuisce ed esegue Cache Loader / Refresher su tutti i server cache nel cluster. Ciò significa che il tuo caricatore di cache/codice di aggiornamento è in esecuzione molto vicino alla cache stessa. E questo accelera anche il caricamento/l'aggiornamento dei dati in caso di grandi set di dati.

Caratteristiche principali

Ecco alcuni punti salienti delle funzionalità Read-through, Write-through e Write-behind in NCache.

  1. Codice lato server (.NET): sviluppi il tuo Cache Loader / Refresher in .NET. Esiste un'interfaccia per Loader e Refresher che sviluppi e quindi distribuisci il tuo codice a tutti i server cache nel cluster. NCache è quindi in grado di chiamarli all'avvio della cache o successivamente per l'aggiornamento. Il tuo codice è sviluppato in .NET e viene chiamato nativamente da NCache poiché è sviluppato anche in .NET.
  2. Il caricatore/aggiornamento viene eseguito in un processo separato: NCache esegue il caricatore/aggiornamento della cache in un processo separato su ciascun server cache rispetto al processo che contiene i dati della cache. Ciò significa che la tua cache non è influenzata da errori o arresti anomali nel codice del caricatore / aggiornamento della cache poiché il suo processo può essere facilmente riavviato da NCache Servizio di gestione sullo stesso server cache.
  3. Set di dati con più nomi: è possibile definire più set di dati denominati per suddividere il caricamento/l'aggiornamento dei dati in blocchi di dati paralleli. Assegnando un nome al set di dati nella configurazione, il codice del caricatore/aggiornamento della cache responsabile del caricamento/aggiornamento di qualsiasi set di dati denominato sa di quale set di dati si tratta e quindi può utilizzare il codice appropriato per recuperare solo quei dati.
  4. Set di dati distribuiti ai server di cache in fase di esecuzione: NCache utilizza un algoritmo round-robin per distribuire i set di dati a tutti i server cache nel cluster per caricare/aggiornare in parallelo. Questo accelera un po' il caricamento/l'aggiornamento poiché hai sempre almeno 2 server cache nel cluster e molto probabilmente più di 2.
  5. Pianificazione a livello di set di dati (mensile, settimanale, orario giornaliero, intervallo giornaliero): NCache consente di definire la pianificazione di caricamento/aggiornamento a livello di set di dati in modo che ogni set di dati possa avere la propria pianificazione. La programmazione può essere Mensile, Settimanale, Orario Giornaliero e Intervallo Giornaliero. L'ora giornaliera indica un'ora specifica del giorno ogni giorno, mentre l'intervallo giornaliero significa eseguire più volte in un giorno ogni giorno ma dopo aver atteso un intervallo specifico dall'ultima esecuzione.
  6. Aggiornamento del set di dati su richiesta: oltre a fornire la pianificazione a livello di set di dati, NCache fornisce anche un cmdlet di PowerShell che consente di richiamare uno specifico aggiornamento del set di dati su richiesta. In questo modo, se ritieni che i dati del set di dati siano cambiati ma non è venuta l'ora programmata, puoi chiamare NCache per rinfrescarlo. Puoi integrare questa chiamata in una qualsiasi delle tue applicazioni in cui hai una migliore comprensione dello stato dei tuoi dati nel tuo database/origine dati la tua applicazione può effettuare la chiamata se aggiornare su richiesta o meno.

Caricatore cache / Interfaccia di aggiornamento

È abbastanza semplice sviluppare codice Cache Loader / Refresher. Di seguito è riportato un esempio di interfaccia per esso.

Caricatore cache / Interfaccia di aggiornamento

public interface ICacheLoader : IDisposable {
	void Init(IDictionary<string, string> parameters, string cacheName);
	object LoadDatasetOnStartup(string dataset);
	object RefreshDataset(string dataset, object userContext);
	IDictionary<string, RefreshPreference> 
GetDatasetsToRefresh(IDictionary<string, object> userContexts);
}
© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.