La maggior parte delle fiorenti attività di e-commerce di oggi hanno sofferto di un lento tempo di reazione del sito Web ad un certo punto in passato. Ciò è in parte dovuto a un cambio di paradigma nelle preferenze degli utenti, più inclini all'acquisto online. Pertanto, i meccanismi tradizionali non sono riusciti a sostenere l'afflusso delle richieste dei clienti.
Con l'avvento di soluzioni di cache distribuita in memoria, linearmente scalabili come NCache, ci sono stati miglioramenti significativi nei tempi di risposta delle aziende. La maggior parte delle aziende prospere ha un livello di memorizzazione nella cache parte della propria architettura di sistema, che ha inizialmente dato un notevole boom alle aziende.
NCache Dettagli NCache Caricatore documenti NCache Guida per l'amministratore del caricatore
Che cos'è un caricatore di cache?
Prima di andare avanti, consideriamo uno scenario: la tua azienda prevede di introdurre uno sconto sulla vendita lampo a mezzanotte. È allora che inizierà l'afflusso di richieste degli utenti. Quindi, che ne dici di caricare la tua cache con i dettagli relativi allo sconto prima che inizi ufficialmente la vendita. In questo modo, una volta bombardati dalle richieste degli utenti, sarai dotato delle informazioni pertinenti per gestirle.
Soluzioni di memorizzazione nella cache aziendale come NCache aiuta a superare questo ritardo di prestazioni iniziale incorporando una speciale funzione di memorizzazione nella cache: caricatore di avvio della cache per precaricare la cache. NCache espone un ICacheLoader interfaccia che puoi implementare e quindi distribuire sul server. In base alla tua logica, i dati vengono quindi precaricati nella cache come processo in background, all'avvio.
I NCache ICacheLoader l'interfaccia espone i tre metodi seguenti: Dentro, lineamentie Carica set di dati all'avvio che puoi personalizzare il codice in base alle tue esigenze aziendali:
1 2 3 |
public void Init(IDictionary<string, string> parameters, string cacheName); public object LoadDatasetOnStartup(string dataset); public void Dispose(); |
Funzionalità del caricatore di cache
Dotato di un ricco set di funzionalità, il NCache Caricatore di avvio aiuta a promuovere un'esperienza utente migliorata. Viene sviluppato, tenendo in considerazione i problemi che devono affrontare il cliente, mentre si cerca di risolverli.
Per aiutarti a comprendere meglio l'argomento, esaminiamo il nucleo NCache caratteristiche del caricatore di seguito:
Facilmente configurabile
I ICacheLoader
l'interfaccia è facile da configurare. Devi solo implementarlo e quindi distribuire la tua logica tramite il NCache Gestore lato server. Abilitando la funzione di caricamento della cache, il codice viene eseguito automaticamente all'avvio della cache.
Insiemi di dati logici
Se stai lavorando su un cluster di cache multi-nodo, puoi dividere i tuoi dati in set logici e NCache accelera il processo di caricamento dei dati assegnando questi gruppi ai nodi del cluster in modo round-robin.
Supponiamo di avere un cluster a due nodi e la tua azienda richiede il caricamento di due set di dati: products
ed suppliers
. Basta includerli nella logica dell'interfaccia e specificarli set di dati nella vostra configurazione della cache. NCache inizierà il caricamento dei dati su entrambi i nodi del cluster in parallelo.
Di seguito è riportato un esempio di implementazione del metodo Carica set di dati all'avvio:
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 |
public object LoadDatasetOnStartup(string dataset) { // Create a list of datasets to load at cache startup IList<object> datasetToLoad; 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 foreach (var product in datasetToLoad) { string key = $"ProductID:{product.Id}"; cache.Insert(key, product); } break; // If dataset is "suppliers", fetch suppliers from data source to load in cache case "suppliers": // load suppliers from database and add the cache. break; default: // Invalid dataset } // User context is the time at which datasets were loaded in the cache object userContext = DateTime.Now; return userContext; } |
Un servizio di caricamento dedicato
NCache utilizza un servizio di caricamento dedicato su ciascuno dei nodi del server per migliorare la velocità complessiva della cache. Questa è una critica NCache funzione perché se un set di dati di grandi dimensioni deve essere precaricato nella cache, il servizio di caricamento separato garantisce che ciò non ostacoli le normali prestazioni della cache.
NCache Dettagli Documenti dell'interfaccia ICacheLoader NCache Guida ai fornitori di distribuzione
Usa il NCache Aggiornamento per ricaricare i dati della cache
Sebbene sappiamo quanto possa essere utile una cache precaricata, esiste una significativa possibilità che i dati della cache diventino obsoleti se sono presenti aggiornamenti periodici nell'origine dati di back-end. In tali scenari, i dati inseriti nella cache non rimangono significativi, non riuscendo a soddisfare del tutto lo scopo di una cache precaricata.
Continuando con l'esempio di e-commerce della sezione precedente, supponiamo che nella prima fase fornivi uno sconto fisso del 25% su articoli selezionati, ma improvvisamente, decidi di aumentare la percentuale di sconto al 50% e applicarla all'intero stock: cosa succede ai dati della cache esistenti? Ora è obsoleto, il che significa che è necessario un meccanismo per aggiornare il set di dati pertinente nella cache.
NCache ha una soluzione per tali situazioni: consente ai suoi utenti di aggiornare periodicamente la cache con i dati più recenti dalla fonte. Puoi farlo con entrambi pianificazione dei tuoi set di dati oppure invocando il rinfresco su richiesta.
Se puoi prevedere quando sarà necessario aggiornare la tua cache, puoi implementare il RefreshDataset
metodo dell'interfaccia e scegliere un intervallo di tempo appropriato che può essere ore, giorni, settimane o mesi.
Di seguito è riportato un esempio di implementazione del metodo Aggiorna set di dati:
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 |
public object RefreshDataset(string dataset, object userContext) { DateTime? lastRefreshTime; switch (dataset.ToLower()) { // If dataset is "products", fetch updated products from data source case "products": lastRefreshTime = userContext as DateTime?; IList<Product> productsToRefresh = FetchUpdatedProducts(lastRefreshTime) as IList<Product>; // Insert updated products in the cache foreach (var product in productsToRefresh) { string key = $"ProductID:{product.Id}"; CacheItem cacheItem = new CacheItem(product); _cache.Insert(key, cacheItem); } break; // If dataset is "supplier", fetch updated suppliers from data source case "suppliers": lastRefreshTime = userContext as DateTime?; // fetch all suppliers updated since ‘lastRefreshTime’ and insert in cache. break; default: // Invalid dataset } // User context is the time at which datasets were refreshed userContext = DateTime.Now; return userContext; } |
Se, d'altra parte, non sei sicuro di quando i dati della tua cache saranno obsoleti, puoi implementare il Ottieni set di dati da aggiornare metodo in ICacheLoader
interfaccia per trovare a livello di codice i set di dati che sono stati modificati e aggiornarli. Puoi anche usare PowerShell Invoke-RefresherDataset cmdlet per aggiornare la cache su richiesta.
1 |
public IDictionary<string, RefreshPreference> GetDatasetsToRefresh(IDictionary<string, object> userContexts); |
Conclusione
Un caricatore di cache non è più solo un'opzione: è una funzionalità indispensabile per le aziende che desiderano espandere la propria clientela a livello globale perché in questa era frenetica e competitiva, la facciata della tua attività non può mai crollare. Quindi, se stai cercando una soluzione di memorizzazione nella cache distribuita come NCache per aiutare a far crescere il tuo business, contattateci con noi e lascia che i nostri esperti tecnici ti aiutino!