Heutige Anwendungen müssen extrem hohe Transaktionslasten skalieren und bewältigen können. Allerdings sind Datenbanken nicht skalierbar und stellen daher einen Engpass dar. Um dieses Problem zu lösen, wenden sich viele Menschen an Verteilter In-Memory-Cache weil es linear skaliert und die Datenbankengpässe beseitigt.
Ein verteilter Cache enthält normalerweise zwei Arten von Daten: Transaktionsdaten und Referenzdaten. Transaktionsdaten ändern sich sehr häufig und werden daher nur für sehr kurze Zeit zwischengespeichert. Caching sorgt jedoch immer noch für eine erhebliche Steigerung der Leistung und Skalierbarkeit.
Referenzdaten hingegen ändern sich nicht sehr häufig. Dabei kann es sich um statische oder dynamische Daten handeln, die sich stündlich, jeden Tag usw. ändern. Manchmal können diese Daten riesig sein (in Gigabyte). Es wäre schön, wenn diese Referenzdaten beim Cache-Start vorab in einen verteilten Cache geladen werden könnten, da Ihre Anwendungen sie dann nicht zur Laufzeit laden müssten. Referenzdaten werden geladen zur Laufzeit würde die Leistung Ihrer Anwendung verlangsamen, insbesondere wenn es sich um viele Daten handelt.
NCache Details NCache Docs Cache Loader- und Refresher-Dokumente
Wie sollten Referenzdaten in einen verteilten Cache vorgeladen werden?
Ein Ansatz besteht darin, Ihre Anwendung so zu entwerfen, dass sie beim Start der Anwendung alle erforderlichen Referenzdaten aus der Datenbank abruft und im verteilten Cache ablegt.
Dieser Ansatz wirft jedoch einige andere Probleme auf. Erstens verlangsamt es den Start Ihrer Anwendung, da Ihre Anwendung jetzt am Vorladen des Caches beteiligt ist. Zweitens: Wenn mehrere Anwendungen einen verteilten Cache gemeinsam nutzen, kommt es entweder in jeder Anwendung zu einer Codeduplizierung oder alle Ihre Anwendungen sind darauf angewiesen, dass eine Anwendung den verteilten Cache vorab lädt. Schließlich führt das Einbetten von Code zum Vorladen des Caches in Ihre Anwendung zu einer Beschädigung Ihres Anwendungsdesigns, da Sie Code hinzufügen, der nicht zu Ihrer Anwendung gehört. Natürlich ist keine dieser Situationen sehr wünschenswert.
Was wäre, wenn wir das geben würden? Vorladeverantwortung zum verteilten Cache selbst? In diesem Fall könnte das Vorladen Teil des Cache-Startvorgangs sein und daher Ihre Anwendung überhaupt nicht involvieren. Sie können den Cache so konfigurieren, dass beim Start alle erforderlichen Daten vorab geladen werden, sodass sie von Anfang an für alle Anwendungen verfügbar sind. Dies vereinfacht Ihre Anwendung, da sie sich nicht mehr um das Vorladen der Logik kümmern muss.
NCache Details NCache Docs Cache Loader- und Refresher-Dokumente
Referenzdaten im Cache vorab laden
NCache bietet eine sehr leistungsstarke und flexible Funktion zum Vorladen Ihres Caches beim Start. Sie können benutzerdefinierten Code für Ihren Cache-Loader schreiben und ihn bei registrieren NCache. Sobald dies erledigt ist, NCache ruft beim Cache-Start den Cache-Loader (mit Ihrem benutzerdefinierten Code) auf. Bevor wir mit der Implementierung fortfahren, lernen wir zunächst die Grundkomponenten von kennen NCache Cache-Startup-Loader.
- Laderservice: Für eine Cluster-Topologie ein dedizierter Laderservice Läuft auf jedem Knoten, um Daten gemäß asshttps://www zu laden.alachisoft.com/resources/docs/ncache/prog-guide/cache-startup-loader-overview.html#loader-serviceigned Datensatz. Dies verbessert die Ladeleistung, indem die Belastung des Cache-Prozesses verringert wird.
- Datensätze: Die zu ladenden Daten sind unterteilt in logische Datensätze vom Benutzer erstellt und mithilfe des Round-Robin-Algorithmus an die Knoten verteilt. Dadurch wird der Ladevorgang beschleunigt, indem Parallelität erreicht wird.
Um tiefer in die Materie einzutauchen NCache Vorladefunktion können Sie sehen Cache-Loader-EigenschaftenAußerdem NCache erleichtert auch das Aktualisieren der geladenen Cache-Daten durch die Bereitstellung Cache-Refresher -Funktion
Implementieren Sie die ICacheLoader-Schnittstelle
Um das Vorladen mit zu aktivieren NCache, müssen Sie eine einfache Schnittstelle mit dem Namen implementieren ICacheLoader
. Es wird aufgerufen, um den Cache bei der Beantwortung der Frage „Wie und welche Daten sollen geladen werden?“ zu unterstützen. Hier erfahren Sie, wie Sie die folgenden Methoden einfach individuell programmieren können ICacheLoader
Schnittstelle basierend auf Ihren Geschäftsanforderungen.
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; } } |
Jede Ausnahme, die während der Start-Loader-Verarbeitung aufgetreten ist, wird protokolliert, ohne dass es zu Problemen für Ihre Anwendung kommt. Einfach und effektiv!
Konfigurieren Sie den Start-Loader
Sobald Sie den Cache Startup Loader implementiert haben, können Sie ihn mithilfe von für Ihren Cache konfigurieren NCache Webmanager. Sie können den Cache-Loader auf der detaillierten Konfigurationsseite für den Cache aktivieren NCache Webmanager. Ausführliche Schritte finden Sie unter Konfigurieren des Cache-Startup-Loaders mit NCache Web Manager.
Sie können auch Datensätze zu einem Cache hinzufügen und daraus entfernen, indem Sie den Cache-Loader mithilfe von konfigurieren Add-StartupLoader
und Remove-StartupLoader
PowerShell-Cmdlets bzw. Die entsprechenden Beispiele finden Sie hier Loader-Datensatz hinzufügen und Entfernen Sie den Startup-Loader zum besseren verständnis.
Fazit!
Wie Sie sehen können, NCache bietet Ihnen einen leistungsstarken Mechanismus zum Vorladen Ihres verteilten Caches und sorgt dafür, dass die Leistung Ihrer Anwendungen stets hoch bleibt. Neben, NCache erleichtert auch das Aktualisieren der geladenen Cache-Daten durch die Bereitstellung Cache-Refresher Besonderheit. Also, herunterladen NCache Machen Sie sich jetzt bereit, die umfangreichen Funktionen zu nutzen!
Es ist in Wirklichkeit eine schöne und hilfreiche Information. Ich freue mich, dass Sie diese hilfreichen Informationen mit uns geteilt haben.
Bitte bleiben Sie uns wie folgt informiert. Vielen Dank für die gemeinsame Nutzung.
Hallo, ich habe Ihre Website über gefunden
Bei der Suche nach einem vergleichbaren Thema ist Ihre Website hier gelandet
auf, es scheint gut zu sein. Ich habe es in meinen Google-Lesezeichen mit einem Lesezeichen versehen.
Hallo, ich bin gerade über Google auf Ihr Blog aufmerksam geworden und habe festgestellt, dass es wirklich informativ ist.
Ich werde auf Brüssel achten. Ich würde mich freuen, wenn Sie damit fortfahren
in der Zukunft. Viele Menschen werden wahrscheinlich davon profitieren
von deinem Schreiben. Prost!