Le applicazioni odierne devono scalare e gestire livelli estremi di carichi di transazione. Tuttavia, i database non sono in grado di scalare e quindi diventano un collo di bottiglia. Per risolvere questo problema, molte persone si rivolgono a cache distribuita in memoria perché si ridimensiona in modo lineare e rimuove i colli di bottiglia del database.
Una cache distribuita contiene in genere due tipi di dati, dati transazionali e dati di riferimento. I dati transazionali cambiano molto frequentemente e vengono quindi memorizzati nella cache per un tempo molto breve. Tuttavia, la memorizzazione nella cache fornisce comunque un notevole aumento delle prestazioni e della scalabilità.
I dati di riferimento, invece, non cambiano molto frequentemente. Possono essere dati statici o dati dinamici che cambiano forse ogni ora, giorno, ecc. A volte, questi dati possono essere enormi (in gigabyte). Sarebbe bello se questi dati di riferimento potessero essere precaricati in una cache distribuita all'avvio della cache perché le tue applicazioni non avrebbero bisogno di caricarli in fase di esecuzione. Caricamento dei dati di riferimento in fase di esecuzione rallenterebbe le prestazioni dell'applicazione, soprattutto se si tratta di molti dati.
NCache Dettagli NCache Docs Caricatore cache e documenti di aggiornamento
Come dovrebbero essere precaricati i dati di riferimento in una cache distribuita?
Un approccio consiste nel progettare l'applicazione in modo tale che durante l'avvio dell'applicazione, recuperi tutti i dati di riferimento richiesti dal database e li inserisca nella cache distribuita.
Tuttavia, questo approccio solleva alcune altre questioni. Innanzitutto, rallenta l'avvio dell'applicazione perché l'applicazione è ora coinvolta nel precaricamento della cache. In secondo luogo, se hai più applicazioni che condividono una cache distribuita, hai la duplicazione del codice in ciascuna applicazione o tutte le tue applicazioni dipendono da un'applicazione che precarica la cache distribuita. Infine, l'incorporamento del codice di precaricamento della cache all'interno dell'applicazione danneggia la progettazione dell'applicazione perché stai aggiungendo codice che non appartiene alla tua applicazione. Naturalmente, nessuna di queste situazioni è molto desiderabile.
E se diamo questo responsabilità di precaricamento alla cache distribuita stessa? In questo caso, il precaricamento potrebbe far parte del processo di avvio della cache e quindi non coinvolge affatto la tua applicazione. È possibile configurare la cache per precaricare tutti i dati richiesti all'avvio in modo che sia disponibile per tutte le applicazioni da utilizzare dall'inizio. Ciò semplifica la tua applicazione perché non deve più preoccuparsi del precaricamento della logica.
NCache Dettagli NCache Docs Caricatore cache e documenti di aggiornamento
Precaricamento dei dati di riferimento nella cache
NCache fornisce una funzionalità molto potente e flessibile per il precaricamento della cache all'avvio. Puoi scrivere un codice personalizzato per il tuo caricatore di cache e registrarlo con NCache. Una volta fatto questo, NCache chiama il caricatore della cache (con il tuo codice personalizzato) all'avvio della cache. Prima di passare all'implementazione, conosciamo i componenti di base di NCache Caricatore di avvio della cache.
- Servizio caricatore: Per una topologia in cluster, un apposito servizio di caricamento viene eseguito su ogni nodo per caricare i dati secondo il culohttps://www.alachisoft.com/resources/docs/ncache/prog-guide/cache-startup-loader-overview.html#loader-serviceigned set di dati. Ciò migliora le prestazioni di caricamento riducendo il carico sul processo della cache.
- Dataset: I dati da caricare sono suddivisi in set di dati logici dall'utente e distribuito ai nodi utilizzando l'algoritmo round-robin. Ciò accelera il processo di caricamento ottenendo il parallelismo.
Per scavare più a fondo nel NCache funzione di precaricamento, puoi vedere il proprietà del caricatore di cache. Inoltre, NCache facilita anche l'aggiornamento dei dati della cache caricati fornendo il file Aggiornamento della cache caratteristica.
Implementare l'interfaccia ICacheLoader
Per abilitare il precaricamento utilizzando NCache, è necessario implementare una semplice interfaccia denominata ICacheLoader
. Viene chiamato ad assistere la cache nel rispondere alla domanda “Come e quali dati caricare?”. Ecco come puoi semplicemente personalizzare il codice dei seguenti metodi di ICacheLoader
interfaccia in base alle tue esigenze aziendali.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
class CacheLoader : ICacheLoader { public void Init(IDictionary<string, string> parameters, string cacheName) { //connect to cache cache = CacheManager.GetCache(cacheName); //Connection string is passed as parameters at the time of configuration // connectionString = parameters.ContainsKey("ConnectionString") ? parameters["ConnectionString"] : null; if (connectionString != null) { //Let's connect to the database connection = new SqlConnection(connectionString); } } public object LoadDatasetOnStartup(string dataSet) { // Create a list of datasets to load at cache startup IList<object> datasetToLoad; if (dataSet != null) { switch (dataSet.ToLower()) { // If dataset is "products", fetch products from data source to load in cache case "products": datasetToLoad = FetchProductsFromDataSource(); // Insert fetched product in the cache // You can also use NCache bulk API to insert data into cache foreach (var product in datasetToLoad) { string key = $"ProductID:{product.Id}"; cache.Insert(key, product); } break; // You can add more cases for different datasets as per requirement and fetch them from the data source default: // Invalid dataset throw new Exception($"Unknown dataset is configured. Dataset {dataSet}"); break; } } return null; } } |
Qualsiasi eccezione che si è verificata durante l'elaborazione del caricatore di avvio viene registrata senza creare alcun problema per l'applicazione. Semplice ed efficace!
Configura il caricatore di avvio
Dopo aver implementato Cache Startup Loader, puoi configurarlo per la tua cache, usando NCache Gestore web. Puoi abilitare il caricatore della cache dalla pagina di configurazione dettagliata per la cache in NCache Gestore web. Per i passaggi dettagliati, puoi fare riferimento a come configurare il caricatore di avvio della cache utilizzando NCache Web Manager.
Puoi anche aggiungere e rimuovere set di dati in una cache con il caricatore di cache configurato utilizzando il file Add-StartupLoader
ed Remove-StartupLoader
rispettivamente i cmdlet di PowerShell. Puoi vedere gli esempi pertinenti per aggiungi il set di dati del caricatore ed rimuovere il caricatore di avvio per una migliore comprensione.
Conclusione!
Come si può vedere, NCache ti fornisce un potente meccanismo per precaricare la tua cache distribuita e mantenere sempre elevate le prestazioni delle tue applicazioni. Oltretutto, NCache facilita anche l'aggiornamento dei dati della cache caricati fornendo il file Aggiornamento della cache caratteristica. Quindi, scarica NCache ora e preparati a utilizzare le sue vaste funzionalità!
In realtà è un'informazione piacevole e utile. Sono soddisfatto che tu abbia condiviso con noi queste utili informazioni.
Per favore, tienici informati in questo modo. Grazie per aver condiviso.
Ciao, ho trovato il tuo sito web tramite
Google durante la ricerca di un argomento simile, il tuo sito web è arrivato qui
su, sembra che vada bene. L'ho aggiunto ai segnalibri di Google.
Salve, sono semplicemente stato avvisato del tuo blog tramite Google e ho scoperto che è davvero informativo.
Sto andando a guardare fuori per bruxelles. Apprezzerò se dovessi procedere
in futuro. Probabilmente molte persone ne trarranno beneficio
dalla tua scrittura Saluti!