In einer verteilten Cache-Umgebung kann es Szenarien geben, in denen bestimmte Daten im Cache vorhanden sein sollten, damit die Anwendung sie unmittelbar nach Beginn der Ausführung verwenden kann. Wenn ein Cache gestartet wird, enthält er zunächst keine Daten, was kostspielige Datenquellenfahrten zum Abrufen von Daten verursachen und sich auf die Leistung der Anwendung auswirken kann. Daher ist es wichtig, dass der Cache, der zum Speichern von Daten verwendet wird, mit einigen Referenzdaten vorgeladen wird, bevor die Anwendung diese verwendet.
Für diesen Zweck, NCache stellt ein Cache-Startuploader Funktion, die es den Benutzern ermöglicht, eine Schnittstelle zu implementieren, um gewünschte Referenzdaten vorab in den Cache zu laden, sobald der Cache startet. Dadurch kommt es bei der Benutzeranwendung nicht zu Cache-Fehlern und weniger Datenquellenausfällen, wodurch eine schnellere Leistung erzielt wird.
Komponenten des Cache Startup Loader
Bei jedem Cache-Start ruft der Cache Startup Loader automatisch Daten aus der Datenquelle ab, die der Benutzer vorher verwenden kann. Bevor der Benutzer daher mit der Funktionsweise des Cache Loader fortfährt, sollte er einige seiner Eigenschaften kennen, die im Folgenden erläutert werden.
- Datensätze: Ein Datensatz ist eine Möglichkeit für Benutzer, verschiedene Datentypen zu gruppieren, sodass sie sie in unterschiedlichen Intervallen oder Ereignissen separat laden oder aktualisieren können, um Parallelität zu erreichen.
- Laderservice: Es ist dafür verantwortlich, die Aufgaben zu verwalten und beim Start Daten aus der Datenquelle in den Cache zu laden.
- Cache-Loader-Wiederholungen: Falls ein Vorgang beim Laden des Caches fehlschlägt, können diese fehlgeschlagenen Vorgänge mithilfe der Option „Anzahl der Wiederholungen“, die über konfiguriert wird, erneut ausgeführt werden, bevor mit dem nächsten fortgefahren wird NCache Web-Manager.
NCache Details Cache Loader- und Refresher-Dokumente NCache Docs
Wie implementiert man den Cache-Startup-Loader?
Um den Cache Startup Loader zu aktivieren, muss der Benutzer zunächst den implementieren ICacheLoader Schnittstelle. NCache nutzt diese Schnittstelle mit den unten erläuterten Methoden, um beim Cache-Start Daten aus der Datenquelle in den Cache zu laden.
Initialisieren Sie den Cache-Startup-Loader
Drin Die Methode wird beim Cache-Start aufgerufen, um die konfigurierten Parameter zu übergeben, damit der Benutzer sie entsprechend zum Initialisieren seines Caches und der Datenquelle verwenden kann. Konfigurieren Sie einfach die Verbindung, indem Sie eine Datenbankverbindung wie SQL öffnen und einen Cache mit dem angegebenen Namen initialisieren, wie in der folgenden Beispielimplementierung für .NET und Java.
1 2 3 4 5 6 7 8 9 |
public void Init(IDictionary<string, string> parameters, string cacheName) { cache = CacheManager.GetCache(cacheName); connectionString = parameters.ContainsKey("ConnectionString") ? parameters["ConnectionString"] : null; if (connectionString != null) { connection = new SqlConnection(connectionString); } } |
1 2 3 4 5 6 7 8 |
public void init(Map<String, String> parameters, String cacheName) { cache = CacheManager.getCache(cacheName); connectionString = parameters.containsKey("ConnectionString") ? parameters.get("ConnectionString") : null; if (connectionString != null) { connection = DriverManager.getConnection(connectionString); } } |
Daten beim Cache-Start laden
Die folgende Beispielimplementierung der Methode für .NET und Java LoadDatasetOnStartup of ICacheLoader
Die Schnittstelle ruft die Daten von der Datenquelle ab und fügt sie beim Cache-Start dem Cache hinzu, um den Cache vorab zu laden. Es gibt einen Benutzerkontext zurück, der die Informationen zu den in den Cache geladenen Daten enthält.
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 |
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; // You can add more cases for different datasets as per requirement and fetch them from the data source default: // Invalid dataset } // User context is the time at which datasets were loaded in the cache object userContext = DateTime.Now; return userContext; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public Object loadDatasetsOnStartup(String dataset) { // Create a list of datasets to load at cache startup List<Object> datasetToLoad; switch (dataset.toLowerCase()) { // If dataset is "products", fetch products from data source and add in cache case "products": datasetToLoad = fetchProductsFromDataSource(); // Insert fetched product in the cache for (var product : datasetToLoad) { string key = "ProductID:" + product.productID; cache.insert(key, product); } break; // You can add more cases for different datasets as per the requirement and fetch them from data source default: // Invalid dataset } // User context is the time at which datasets were loaded in the cache Object userContext = LocalDateTime.now(); return userContext; } |
Genauso wie das Vorabladen von Daten eine wichtige Sache ist, kann die Gefahr groß sein, dass die geladenen Daten veraltet sind. Die bereits geladenen Daten im Cache können aufgrund von Änderungen in der Datenquelle verändert werden, weshalb die vorgeladenen Daten möglicherweise veraltet sind. Um diese geladenen Daten aktuell zu halten, NCache bietet eine Funktion von Cache-Refresher das die Cache-Loader-Implementierung verwendet, um die geladenen Daten aktuell und mit der Datenquelle synchronisiert zu halten.
NCache Details Konfigurieren Sie Cache Loader und Refresher Cache-Refresher-Dokumente
Konfigurieren Sie den Cache Loader über NCache Web Manager
Sobald der Benutzer den Cache Startup Loader implementiert hat, kann er ihn über konfigurieren NCache Web Manager. Nachfolgend erfahren Sie, wie es gemacht werden kann.
Fazit!
Wie Sie sehen können, NCache bietet seinen Benutzern eine leistungsstarke Cache-Startup-Loader-Funktion, um Daten vorab in den Cache zu laden, anstatt sie manuell nachzuverfolgen. Also, greifen Sie zu NCache und erwerben Sie alle erstaunlichen Funktionen für eine schnellere Anwendungsleistung und Skalierbarkeit!