Die meisten florierenden E-Commerce-Unternehmen von heute litten irgendwann in der Vergangenheit unter einer langsamen Reaktionszeit ihrer Website. Dies ist zum Teil auf einen Paradigmenwechsel in den Benutzerpräferenzen zurückzuführen – sie neigen eher zum Online-Kauf. Daher ist es den herkömmlichen Mechanismen nicht gelungen, den Zustrom von Kundenanfragen aufrechtzuerhalten.
Mit dem Aufkommen von In-Memory-, linear skalierbaren, verteilten Caching-Lösungen wie NCacheEs gab deutliche Verbesserungen bei den Reaktionszeiten der Unternehmen. Die meisten florierenden Unternehmen haben eine Caching-Schicht als Teil ihrer Systemarchitektur – was den Unternehmen zunächst einen erheblichen Aufschwung bescherte.
NCache Details NCache Loader-Dokumente NCache Loader-Administratorhandbuch
Was ist ein Cache Loader?
Bevor ich fortfahre, betrachten wir ein Szenario: Ihr Unternehmen plant die Einführung eines Flash-Sale-Rabatts um Mitternacht. Dann beginnt der Zustrom von Benutzeranfragen. Wie wäre es also, wenn Sie Ihren Cache mit den relevanten Rabattdetails füllen, bevor der Verkauf offiziell beginnt? Auf diese Weise verfügen Sie, sobald Sie mit Benutzeranfragen bombardiert werden, über die relevanten Informationen, um diese zu bearbeiten.
Enterprise-Caching-Lösungen wie NCache Helfen Sie, diese anfängliche Leistungsverzögerung zu überwinden, indem Sie eine spezielle Caching-Funktion integrieren – Cache-Startladeprogramm um Ihren Cache vorab zu laden. NCache entlarvt eine ICacheLoader Schnittstelle, die Sie implementieren können, und dann auf dem Server bereitstellen. Basierend auf Ihrer Logik werden die Daten dann beim Start als Hintergrundprozess vorab in den Cache geladen.
Das NCache ICacheLoader Die Schnittstelle stellt die folgenden drei Methoden bereit: Drin, Entsorgen und LoadDatasetOnStartup die Sie basierend auf Ihren Geschäftsanforderungen individuell programmieren können:
1 2 3 |
public void Init(IDictionary<string, string> parameters, string cacheName); public object LoadDatasetOnStartup(string dataset); public void Dispose(); |
Cache-Loader-Funktionen
Ausgestattet mit einem umfangreichen Funktionsumfang NCache Start-Loader trägt zur Förderung einer verbesserten Benutzererfahrung bei. Es wird unter Berücksichtigung der Kundenprobleme entwickelt und gleichzeitig nach Möglichkeiten gesucht, diese zu lösen.
Um Ihnen zu einem tieferen Verständnis des Themas zu verhelfen, werfen wir einen Blick auf den Kern NCache Loader-Funktionen unten:
Einfach konfigurierbar
Das ICacheLoader
Die Schnittstelle ist einfach zu konfigurieren. Sie müssen es nur implementieren und dann Ihre Logik über bereitstellen NCache Manager auf der Serverseite. Durch die Aktivierung der Cache-Loader-Funktion wird Ihr Code beim Cache-Start automatisch ausgeführt.
Logische Datensätze
Wenn Sie an einem Cache-Cluster mit mehreren Knoten arbeiten, können Sie Ihre Daten in logische Sätze und unterteilen NCache beschleunigt den Prozess des Datenladens, indem diese Gruppen im Round-Robin-Verfahren Clusterknoten zugewiesen werden.
Angenommen, Sie verfügen über einen Cluster mit zwei Knoten und Ihr Unternehmen erfordert das Laden von zwei Datensätzen: products
machen suppliers
. Binden Sie diese einfach in Ihre Schnittstellenlogik ein und spezifizieren Sie diese Datensätze in Ihrem Cache-Konfiguration. NCache beginnt mit dem parallelen Laden der Daten auf beiden Clusterknoten.
Nachfolgend finden Sie eine Beispielimplementierung der Methode LoadDatasetOnStartup:
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; } |
Ein spezieller Ladedienst
NCache verwendet einen dedizierten Ladedienst auf jedem Serverknoten, um die Cache-Geschwindigkeit insgesamt zu verbessern. Dies ist ein kritischer Punkt NCache Funktion, denn wenn ein großer Datensatz vorab in den Cache geladen werden muss, stellt der separate Ladedienst sicher, dass die reguläre Cache-Leistung dadurch nicht beeinträchtigt wird.
NCache Details ICacheLoader-Schnittstellendokumente NCache Leitfaden für Bereitstellungsanbieter
Verwenden Sie die NCache Refresher zum Neuladen der Cache-Daten
Wir wissen zwar, wie hilfreich ein vorinstallierter Cache sein kann, es besteht jedoch ein erhebliches Risiko, dass die Cache-Daten veraltet sind, wenn die Backend-Datenquelle regelmäßig aktualisiert wird. In solchen Szenarien behalten die im Cache gefüllten Daten ihre Bedeutung und erfüllen den Zweck eines vorinstallierten Caches überhaupt nicht.
Fahren wir mit dem E-Commerce-Beispiel aus dem vorherigen Abschnitt fort: Angenommen, Sie haben in der ersten Phase einen Pauschalrabatt von 25 % auf ausgewählte Artikel gewährt, aber plötzlich entscheiden Sie sich, den Rabattprozentsatz auf 50 % zu erhöhen und ihn auf den gesamten Lagerbestand anzuwenden – was passiert mit den vorhandenen Cache-Daten? Es ist mittlerweile veraltet – was bedeutet, dass Sie einen Mechanismus benötigen, um den relevanten Datensatz im Cache zu aktualisieren.
NCache hat für solche Situationen eine Lösung: Es ermöglicht seinen Benutzern, den Cache regelmäßig mit den neuesten Daten aus der Quelle zu aktualisieren. Sie können dies entweder tun Planen Sie Ihre Datensätze oder von Aufrufen der Auffrischung auf Nachfrage.
Wenn Sie vorhersagen können, wann Ihr Cache aktualisiert werden muss, können Sie Folgendes implementieren RefreshDataset
Wählen Sie die Methode der Schnittstelle aus und wählen Sie ein geeignetes Zeitintervall aus, das Stunden, Tage, Wochen oder Monate betragen kann.
Nachfolgend finden Sie eine Beispielimplementierung der Methode Datensatz aktualisieren:
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; } |
Wenn Sie andererseits nicht sicher sind, wann Ihre Cache-Daten veraltet sein werden, können Sie das implementieren GetDatasetsToRefresh Methode in der ICacheLoader
Schnittstelle, um die geänderten Datensätze programmgesteuert zu finden und zu aktualisieren. Sie können auch die PowerShell verwenden Invoke-RefresherDataset Cmdlet zum Aktualisieren des Caches bei Bedarf.
1 |
public IDictionary<string, RefreshPreference> GetDatasetsToRefresh(IDictionary<string, object> userContexts); |
Zusammenfassung
Ein Cache-Loader ist nicht mehr nur eine Option – er ist eine unverzichtbare Funktion für Unternehmen, die ihren Kundenkreis weltweit erweitern möchten, denn in diesem schnelllebigen, wettbewerbsintensiven Zeitalter darf die Front Ihres Unternehmens niemals untergehen. Wenn Sie also nach einer verteilten Caching-Lösung wie suchen NCache um zum Wachstum Ihres Unternehmens beizutragen, Nehmen Sie Kontakt mit uns auf Kommen Sie zu uns und lassen Sie sich von unseren technischen Experten helfen!