Cache Loader und Refresher in NCache

NCache ist ein extrem schneller und skalierbarer verteilter In-Memory-Cache für .NET und speichert Anwendungsdaten, um teure Datenbankreisen zu reduzieren. Verwenden NCache um Leistungsengpässe im Zusammenhang mit Ihrer Datenspeicherung und Datenbank zu beseitigen.

Wenn Ihre Cache-Größe wächst und Sie zunehmend Referenz-/Nachschlagedaten zwischenspeichern, stehen Sie vor dem Problem, dass Sie beim Start einen leeren Cache füllen müssen. Dann gibt es das Problem, diese zwischengespeicherten Daten aktuell zu halten und regelmäßig weitere Daten hinzuzufügen, um ganze Datensätze im Cache zu halten. Und um all dies zu tun, müssen Sie nicht nur eine benutzerdefinierte Anwendung entwickeln, sondern sie auch irgendwo hosten und sicherstellen, dass sie immer beim Cache-Start und auch in geplanten Intervallen ausgeführt wird.

Dies ist eine Menge zusätzlicher Verwaltung und Kopfschmerzen NCache übernimmt für Sie durch seine leistungsstarke Cache Loader / Refresher-Funktion. NCache können Sie benutzerdefinierten serverseitigen Code entwickeln und ihn für Cache Loader und Refresher registrieren.

NCache bietet Ihnen Folgendes:

  1. Cache Loader (verteilt & parallel): Sie können einen Cache Loader als serverseitigen Code entwickeln, der auf allen Cache-Servern im Cluster bereitgestellt und ausgeführt wird. Dann, wenn der Cache startet, NCache ruft diesen Cache Loader auf jedem Cache-Server parallel auf, um seinen Teil der Daten (genannt Datensätze) aus Ihrer Datenbank / Datenquelle zu lesen und in den Cache zu laden. Cache Loader wird parallel auf allen Cache-Servern ausgeführt, um die Arbeit des Ladens von Daten auf mehrere parallele Datasets zu verteilen.
  2. Cache Refresher (verteilt & parallel): Sie können einen Cache-Refresher als serverseitigen Code entwickeln, der auf allen Cache-Servern im Cluster bereitgestellt und ausgeführt wird. Dann, NCache ruft Ihren Cache Refresher regelmäßig (Zeitplan) auf, um Updates oder frische Daten aus Ihrer Datenbank / Datenquelle zu holen und in den Cache zu legen. Sie können Cache Refresher auch bei Bedarf aufrufen. Cache Refresher wird parallel auf allen Cache-Servern ausgeführt, um die Arbeit des Ladens von Daten auf mehrere parallele Datasets zu verteilen.
Cache Loader und Refresher in NCache

Vorteile von Cache Loader / Refresher

Hier sind einige Vorteile für die Verwendung der Cache Loader/Refresher-Funktion in NCache.

  1. Paralleles Laden / Aktualisieren von Datensätzen: Wenn Ihr Cache groß ist, kann das Laden oder Aktualisieren einige Zeit dauern. Und wenn Sie selbst Code für diesen Zweck schreiben, werden Sie ihn höchstwahrscheinlich auf einem einzelnen Computer ausführen und daher alle Daten nacheinander laden. Aber, NCache verteilt und führt Cache Loader / Refresher auf allen Cache-Servern aus. Dadurch erfolgt das Laden der Daten parallel und wesentlich schneller.
  2. Hochverfügbarkeit von Cache Loader / Refresher: NCache setzt Cache Loader / Refresher auf allen Cache-Servern ein. Das bedeutet, wenn ein Cache-Server ausfällt, wird das Laden/Aktualisieren nicht angehalten, da dieser auf anderen Cache-Servern ausgeführt wird. Und wenn Sie dem Cluster einen neuen Cache-Server hinzufügen, NCache stellt auch Cache Loader / Refresher zur Verfügung und trägt so zur hohen Verfügbarkeit bei. Dies ist etwas, das Sie nicht erreichen können, wenn Sie diesen Code geschrieben und selbst ausgeführt haben.
  3. NCache Hostet es für Sie: Wenn Sie diesen Code selbst entwickeln und ausführen müssten, müssten Sie sicherstellen, dass er immer ausgeführt wird, selbst wenn der Server, auf dem Sie diesen Code ausführen, ausfällt. Dies liegt daran, dass Ihr Cache von diesem Code abhängt, um aktuell und vollständig zu bleiben. Und das ist eine Menge Arbeit, um so etwas in der Produktion zu verwalten. Glücklicherweise, NCache übernimmt diese Verantwortung für Sie und hostet Cache Loader / Refresher für Sie auf allen Cache-Servern. NCache stellt außerdem sicher, dass dieser Code auf mehreren Servern für hohe Verfügbarkeit ausgeführt wird, wie oben erläutert.
  4. Loader/Refresher läuft sehr nah am Cache: wie du weißt, NCache stellt Cache Loader/Refresher auf allen Cache-Servern im Cluster bereit und führt sie aus. Dies bedeutet, dass Ihr Cache-Loader / Refresher-Code sehr nahe am Cache selbst ausgeführt wird. Und dies beschleunigt auch das Laden / Aktualisieren von Daten bei großen Datensätzen.

Feature-Highlights

Hier sind einige Highlights der Read-Through-, Write-Through- und Write-Behind-Funktion in NCache.

  1. Serverseitiger Code (.NET): Sie entwickeln Ihren Cache Loader / Refresher in .NET. Es gibt eine Schnittstelle für Loader und Refresher, die Sie entwickeln und dann Ihren Code auf allen Cache-Servern im Cluster bereitstellen. NCache kann sie dann beim Cache-Start oder später für Refresher aufrufen. Ihr Code wird in .NET entwickelt und von nativ aufgerufen NCache da es auch in .NET entwickelt wird.
  2. Loader / Refresher läuft in separatem Prozess: NCache führt Ihren Cache Loader / Refresher in einem anderen Prozess auf jedem Cache-Server aus als der Prozess, der die Cache-Daten hat. Dies bedeutet, dass Ihr Cache von Fehlern oder Abstürzen in Ihrem Cache Loader / Refresher-Code nicht betroffen ist, da sein Prozess einfach neu gestartet werden kann NCache Verwaltungsdienst auf demselben Cache-Server.
  3. Mehrere benannte Datensätze: Sie können mehrere benannte Datasets definieren, um das Laden/Aktualisieren Ihrer Daten in parallele Datenblöcke aufzuteilen. Durch die Benennung des Datasets in der Konfiguration weiß Ihr Cache Loader/Refresher-Code, der für das Laden/Aktualisieren eines benannten Datasets verantwortlich ist, um welches Dataset es sich handelt, und kann dann den entsprechenden Code verwenden, um nur diese Daten abzurufen.
  4. Zur Laufzeit auf Cache-Server verteilte Datensätze: NCache verwendet einen Round-Robin-Algorithmus, um Datensätze an alle Cache-Server im Cluster zu verteilen, um sie parallel zu laden / zu aktualisieren. Dies beschleunigt das Laden / Aktualisieren erheblich, da Sie immer mindestens 2 Cache-Server im Cluster haben und höchstwahrscheinlich mehr als 2.
  5. Planung auf Datensatzebene (monatlich, wöchentlich, tägliche Zeit, tägliches Intervall): NCache können Sie einen Lade-/Aktualisierungszeitplan auf Datensatzebene definieren, sodass jeder Datensatz seinen eigenen Zeitplan haben kann. Die Planung kann Monatlich, Wöchentlich, Tägliche Zeit und Tägliches Intervall sein. Daily Time bedeutet jeden Tag eine bestimmte Tageszeit, während Daily Interval bedeutet, dass es jeden Tag mehrmals an einem Tag ausgeführt wird, jedoch nach dem Warten auf ein bestimmtes Intervall seit der letzten Ausführung.
  6. On-Demand-Dataset-Aktualisierung: zusätzlich zur Bereitstellung von Planung auf Datensatzebene, NCache stellt auch ein PowerShell-Cmdlet bereit, mit dem Sie bei Bedarf eine bestimmte Datensatzaktualisierung aufrufen können. Auf diese Weise können Sie anrufen, wenn Sie das Gefühl haben, dass sich Dataset-Daten geändert haben, der geplante Zeitpunkt jedoch noch nicht gekommen ist NCache um es aufzufrischen. Sie können diesen Aufruf in jede Ihrer Anwendungen integrieren, wo Sie den Status Ihrer Daten in Ihrer Datenbank/Datenquelle besser verstehen. Ihre Anwendung kann den Aufruf tätigen, ob sie bei Bedarf aktualisiert werden soll oder nicht.

Cache Loader / Refresher-Schnittstelle

Es ist ziemlich einfach, Cache Loader / Refresher-Code zu entwickeln. Unten ist ein Beispiel für eine Schnittstelle dafür.

Cache Loader / Refresher-Schnittstelle

public interface ICacheLoader : IDisposable {
	void Init(IDictionary<string, string> parameters, string cacheName);
	object LoadDatasetOnStartup(string dataset);
	object RefreshDataset(string dataset, object userContext);
	IDictionary<string, RefreshPreference> 
GetDatasetsToRefresh(IDictionary<string, object> userContexts);
}
© Copyright Alachisoft 2002 - Alle Rechte vorbehalten NCache ist eine eingetragene Marke der Diyatech Corp.