In passato, gli esperti hanno provato a rimuovere i colli di bottiglia delle prestazioni utilizzando le cache di sistema ma, con l'aumento del traffico degli utenti, la necessità di applicazioni ad alta velocità è diventata pertinente. Pertanto, soluzioni di cache distribuite in memoria, linearmente scalabili e distribuite come NCache sta diventando popolare, migliorando Le prestazioni del sistema multiplo.
In genere, con un livello di memorizzazione nella cache aggiunto nell'architettura del sistema, le applicazioni sono responsabili del mantenimento dell'integrità dei dati a due hop: a ogni richiesta di scrittura, i dati devono essere aggiornati sia nella cache che nell'origine dati di back-end. Quindi, se hai più applicazioni, che accedono alla stessa cache e al database, dovrai duplicare il tuo codice di persistenza su tutte. Ciò aggiunge complessità al codice a livello di applicazione.
NCache Dettagli NCache Documenti di scrittura NCache Guida per l'amministratore di scrittura
Che cos'è il write-through?
Il write-through è una tecnica di memorizzazione nella cache, in cui quando le applicazioni scrivono i dati nella cache e viene configurata un'origine di supporto, aggiorna anche i record nel database.
NCache fornisce un IWriteThru interfaccia che puoi implementare, aggiungendo tutta la logica del codice di persistenza che altrimenti sarebbe esistita nella tua applicazione client. È necessario distribuire il codice su tutti i server cache tramite il NCache Gestore web.
In questo modo, ogni volta che viene eseguita un'operazione di scrittura sulla cache, verrà chiamato il provider distribuito e il database verrà aggiornato in base alla propria logica.
Per informazioni su come configurare un provider Write-Through, fare riferimento a ufficiale NCache Documentazione del provider di scrittura.
A volte, le operazioni Write-Through potrebbero non riuscire. Ciò può accadere per diversi motivi, come problemi di connessione di rete o a causa di un errore nella logica di implementazione dell'interfaccia. Poiché il Write-Through è sincrono, NCache genera un'eccezione all'applicazione. Troverai l'errore registrato anche nei log della cache.
Inoltre, da allora NCache fornisce anche lo stato dell'operazione: offre agli utenti la flessibilità di gestire vari scenari predeterminati. Ad esempio, nel caso in cui l'operazione non riesce e si desidera riprovare, è possibile impostare l'opzione pertinente e NCache eseguirà i pensionamenti per te.
Per maggiori dettagli su queste operazioni, fare riferimento a NCache Docs.
L'interfaccia del provider di scrittura
Come menzionato prima, NCache espone un IWriteThru interfaccia che l'utente dovrebbe implementare e quindi distribuire all'estremità del server. Il frammento di codice seguente mostra i metodi di IWriteThuProvider:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public interface IWriteThruProvider { // Perform tasks associated with freeing, releasing, or resetting resources. void Dispose(); // Perform tasks like allocating resources or acquiring connections void Init(IDictionary parameters, string cacheId); //Responsible for write operations on data source. OperationResult WriteToDataSource(WriteOperation operation); ICollection WriteToDataSource(ICollection operations); ICollection WriteToDataSource(ICollection dataTypeWriteOperations); } |
Ci sono tre sovraccarichi del WriteToDataSource metodo. Uno soddisfa le richieste di aggiornamento del database atomico mentre l'altro gestisce le richieste di scrittura del database in blocco. NCache espone anche un metodo in cui è possibile aggiungere la logica del codice da aggiornare NCache- strutture dati supportate alla fonte di supporto.
NCache Dettagli Documenti di memorizzazione nella cache di scrittura Configura provider di scrittura
Write-through nell'applicazione
L'applicazione front-end deve solo accedere alla cache per qualsiasi operazione di scrittura con l'opzione di Scrivi attraverso specificato in modo che la cache applichi tale operazione sul database tramite il provider Write-Through.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Pre-Condition: Cache is already connected // Fetch product with the given ProductID Product product = FetchProductByProductID(1001); // Specify the key of the item string key = $"product.ProductID"; product.UnitPrice = 200; // Create a new cacheItem with the product var cacheItem = new CacheItem(product); // Enable write through for the cacheItem created var writeThruOptions = new WriteThruOptions(); writeThruOptions.Mode = WriteMode.WriteThru; // Add the item in the cache with WriteThru enabled CacheItemVersion itemVersion = cache.Insert(key, cacheItem, writeThruOptions); |
Che cos'è la cache write-behind?
Scrivi dietro in una cache distribuita è lo stesso della cache write-through, tranne per il fatto che aggiorna il database in modo asincrono. Ciò significa che l'applicazione non deve mai attendere l'aggiornamento dell'origine dati, aumentando le prestazioni dell'applicazione poiché gli aggiornamenti alle origini dati di back-end sono le operazioni dell'applicazione più lente.
Tieni presente che, sebbene sia lecito ritenere che i dati verranno aggiornati nel database, si consiglia di optare per il write-through se si tratta di dati altamente sensibili. Inoltre, poiché si tratta di un meccanismo asincrono, gli errori in write-behind vengono registrati come eccezioni ed errori nei registri della cache ma non vengono generati nell'applicazione. NCache fornisce opzioni per gestire gli errori allo stesso modo di Write-Through perché restituisce anche gli stati delle operazioni.
Fare riferimento a NCache docs per i dettagli su queste operazioni.
Scrivi dietro nelle applicazioni
Il write-behind è un modo più rapido per eseguire operazioni di write-through poiché utilizza lo stesso provider di write-through ma in modo asincrono. L'unica modifica a livello di applicazione è la differenza nello specificare l'opzione Write-Through come WriteBehind invece di WriteThru.
Dai un'occhiata al codice di esempio qui sotto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Pre-Condition: Cache is already connected // Fetch product with the given ProductID Product product = FetchProductByProductID(1001); // Specify the key of the item string key = $"product.ProductID"; product.UnitPrice = 200; // Create a new cacheItem with the product var cacheItem = new CacheItem(product); // Enable write through for the cacheItem created var writeThruOptions = new WriteThruOptions(); writeThruOptions.Mode = WriteMode.WriteBehind; // Add the item in the cache with WriteThru enabled CacheItemVersion itemVersion = cache.Insert(key, cacheItem, writeThruOptions); |
NCache Dettagli Documenti di memorizzazione nella cache di scrittura Utilizzo del write-behind nella cache
Conclusione
Con soluzioni di cache distribuita come NCache ora fornendo funzionalità come Write-Through e Write-Behind, gli aggiornamenti al database backend sono più semplici e gestibili. Incapsula tutta la logica del codice di persistenza all'interno di un singolo provider. Ciò consente di mantenere il livello del database a livello del provider e il livello della memorizzazione nella cache a livello dell'applicazione. Quindi, con NCache, ottieni il meglio da entrambi i mondi. Ottieni prestazioni di memorizzazione nella cache per le operazioni di lettura e manutenzione dei dati per le operazioni di scrittura. Pertanto, migliora le prestazioni del tuo sistema con l'aiuto di soluzioni aziendali come NCache. Contattaci e lasciati aiutare dai nostri esperti!