Eigenschaften und Übersicht von Cache Loader und Refresher
NCache bietet einen Startup-Cache-Loader, um den Cache beim Start mit wichtigen Daten vorzuladen. Dieser Mechanismus ist in Szenarien von entscheidender Bedeutung, in denen eine Anwendung unmittelbar nach Beginn der Ausführung bestimmte Datensätze benötigt.
Stellen Sie sich beispielsweise eine Video-Streaming-Site mit Hunderten von Videos vor, die dem Benutzer in dem Moment zur Verfügung stehen müssen, in dem der Benutzer auf die Site zugreift. Hier kann der Cache beim Cache-Start mit vorhandenen Videos vorgeladen werden, anstatt die Daten manuell hinzuzufügen.
Note
Manchmal kann es vorkommen, dass der Cache Loader Daten aufgrund eines Verbindungsproblems mit der primären Datenquelle oder eines Fehlers beim Ausführen der benutzerdefinierten Cache Loader-Implementierung nicht erfolgreich lädt. Um einen solchen Fehler/eine solche Ausnahme zu identifizieren, überprüfen Sie die Ausführungsdienstprotokolle.
Das Laden Ihres Caches mit Daten beim Start kann sehr nützlich sein. Auf diese Weise können Sie Leistungsprobleme beim Cache-Start aufgrund eines leeren Cache vermeiden, was zu häufigen Datenanforderungen an die Datenbank führt (was langsam ist). Das NCache Die Cache Startup Loader-Funktion hilft Ihnen, Ihren Cache zum Zeitpunkt des Starts mit Daten Ihrer Wahl vorab zu laden.
Trotz der Vorteile des Vorladens der Daten führt dies dazu, dass die geladenen Daten im Cache veraltet sind. Der Benutzer lädt die relevanten Daten beim Cache-Start, und jede Änderung, die in der Datenquelle auftritt, veraltet sie. Um diese Ungültigkeit zu verhindern, NCache bietet eine weitere Funktion namens Cache Refresher. Der Cache Refresher ist für die Synchronisierung geladener Daten im Cache mit den aktualisierten Daten in der Datenquelle verantwortlich.
Cache Loader- und Refresher-Eigenschaften
Das NCache Cache Loader und Refresher sind wesentliche Funktionen zur Steigerung der Gesamtleistung der Anwendung, insbesondere beim Cache-Start. Wie jedes Feature haben auch diese Features ihre eigenen jeweiligen Eigenschaften. Nachfolgend erläutern wir diese Eigenschaften:
NCache Ausführungsdienst
Im früheren NCache In einigen Versionen liefen der Cache und der Cache Loader früher im selben Prozess, was den Cache-Prozess insbesondere beim Laden überlastete. Diese Belastung führte zu einer vorübergehenden Verschlechterung der Leistung des gesamten Caches.
Für OutProc-Topologien gilt also: NCache hat eine engagierte NCache Ausführungsdienst (früher als Loader-Dienst bekannt) zum Verwalten von Aufgaben und zum Laden von Daten aus der Datenquelle in Caches beim Cache-Start. Dieser Dienst erfüllt unterschiedliche Aufgaben in .NET- und Java-Editionen. In der .NET Edition verwaltet es Cache Loader und Refresher. In der Java Edition hingegen ist der Dienst für die Verwaltung der Veröffentlichung von Cache Loader, Refresher, Datenquellenanbietern und JMX-Zählern verantwortlich.
Alternativ verfügt in einer Cluster-Topologie jeder Knoten über einen dedizierten Dienst, der für das Laden von Daten in seinen Cache verantwortlich ist. Innerhalb der InProc-Topologie wird die Aufgabe jedoch immer noch im selben Prozess ausgeführt.
Datensätze
Wenn bei geclusterten Topologien die auf einen einzelnen Knoten geladenen Daten viel Zeit in Anspruch nehmen, NCache ermöglicht die Verteilung der Datenlast auf Clusterknoten. Die Daten werden basierend auf vom Benutzer bereitgestellten Datensätzen für jeden einzelnen Knoten verteilt. Jeder Knoten hat NCache Ausführungsdienst, der die Daten gemäß den Datensätzen lädt. Grundsätzlich ist ein Datensatz eine Möglichkeit für Sie, ähnliche Daten zu gruppieren und gemeinsam zu laden.
Dataset-Zuordnung zu Cache-Servern zur Laufzeit
Note
NCache ordnet die Datensätze intern den Knoten zu und stellt so sicher, dass keine zwei Knoten die gleichen Daten in den Cache laden. Diese Zuordnung ermöglicht auch das Laden einer großen Datenmenge in kürzerer Zeit.
Der Koordinatorknoten verteilt Datensätze unter den Clusterknoten im Round-Robin-Verfahren. Daher wird jedem der Server ein Datensatz aus der Liste zugewiesen. Wenn einer der Knoten das Laden von Daten für sein Dataset beendet, empfängt er das nächste zu ladende Dataset. Wenn die Anzahl der Verteilungsdatensätze größer ist als die Anzahl der Knoten, NCache weist jedem Knoten ein Dataset zu, und wenn keine weiteren Knoten verfügbar sind, weist es das nächste Dataset dem ersten verfügbaren Knoten zu (der das Laden der Daten abgeschlossen hat).
Nehmen wir an, der Benutzer möchte beim Start bestimmte Daten aus der Northwind-Datenbank in einen Cluster-Cache mit drei Knoten laden. Dann wird die Leistung des Cache Loader durch die Anzahl der zugewiesenen Datensätze beeinflusst. Wir diskutieren dieses Verhalten im Folgenden:
5 Datensätze zum Laden: Der Benutzer weist 5 Datensätze zu (Kundenfälle, Bestellung, Produkte, Mitarbeiter:innen und Lieferanten) zum Loader. Der Koordinatorknoten weist dann die Datensätze den Knoten im Round-Robin-Verfahren zu – Kundenfälle zu Knoten1, Bestellungen zu Knoten2 und Produkte zu Knoten3. Sobald ein Knoten mit dem Laden der Daten fertig ist, weist der Koordinator den nächsten Datensatz zu, d. h. Mitarbeiter:innen und schließlich Lieferanten zum nächsten verfügbaren Knoten.
3 Datensätze zum Laden: Der Benutzer weist 3 Datensätze zu (Kunden, Produkte und Bestellungen) an den Loader – das bedeutet, dass jeder Knoten für den ihm zugewiesenen Datensatz verantwortlich ist, sodass er die Daten entsprechend dem Datensatz lädt und gleichzeitig eine gleichmäßige Verteilung gewährleistet.
2 Datensätze zum Laden: Der Benutzer weist 2 Datensätze zu (Kunden und Produkte) zum Loader. Da der Cluster aus drei Knoten besteht, ist der dritte Knoten während des Ladevorgangs inaktiv. Aus diesem Grund wird bevorzugt, dass die Anzahl der Datensätze gleich oder größer als die Anzahl der Knoten ist, um eine maximale Auslastung zu gewährleisten.
Datensatzplanung
Datasets müssen für die Aktualisierung geplant werden. Deswegen, NCache bietet eine Planungsoption, die das Zeitintervall festlegt, nach dem die Cache-Daten aktualisiert werden. Zu diesem Zeitpunkt prüft das Aktualisierungsintervall, ob Datensätze aktualisiert werden müssen, und aktualisiert/aktualisiert somit die entsprechenden Daten im Cache. Die vier verschiedenen Zeitplanoptionen von Cache Refresher funktionieren wie folgt:
Tägliches Intervall: Das tägliche Intervall stellt sicher, dass ein Datensatz in einem festgelegten Intervall aktualisiert wird, nachdem der Cache gestartet wird. Der Wert des Intervalls wird in Minuten angegeben. Beispielsweise bedeutet 20 Minuten, dass der Datensatz alle 20 Minuten aktualisiert wird.
Tägliche Zeit: Die Option „Tägliche Zeit“ stellt sicher, dass ein Datensatz jeden Tag zu einer bestimmten, vom Benutzer angegebenen Zeit aktualisiert wird. Im Gegensatz zu täglichen Intervallen mit einer Pause von maximal 60 Minuten liegt der Abstand in der Regel bei 24 Stunden und der Beginn ist nicht auf den Cache-Start angewiesen. Es wird im Allgemeinen verwendet, wenn Datensätze nicht so häufig aktualisiert werden wie solche mit täglichen Intervallen.
Wöchentliche: Die wöchentliche Option stellt sicher, dass ein Datensatz jede Woche an bestimmten Tagen zu der vom Benutzer angegebenen Zeit aktualisiert wird. Wenn Sie beispielsweise möchten, dass Ihre geladenen Datensätze jeden Montag, Donnerstag und Samstag genau um Mitternacht aktualisiert werden, müssen Sie eine wöchentliche Datensatzplanung festlegen.
Monatlich: Die monatliche Option stellt sicher, dass ein Datensatz jeden Monat an einem oder mehreren angegebenen Tagen und an einem oder mehreren Wochentagen pro Woche aktualisiert wird. Beispielsweise können Sie die Aktualisierung des Datensatzes so festlegen, dass der Dienst ihn jeden Montag in jeder ersten und letzten Woche des Monats aktualisiert.
Der Zeitplanausdruck hat das Format week:days:hours:minutes
um den Scheduling-Ausdruck anzugeben.
- Wochen können 1-4 sein, wobei 1 die erste Woche des Monats ist.
- Tage können 1-7 sein und die Wochentage anzeigen. Die Stunden und Minuten können entsprechend der Tageszeit für die Planung angegeben werden. Sie können mehr als einen Wochentag angeben, indem Sie die Tage durch ein Komma getrennt hinzufügen.
- Benutzer können mehrere Wochen aus einem Monat für die Planung auswählen.
Nehmen wir ein paar Beispiele, um zu verstehen, wie der Scheduling-Ausdruck funktioniert:
Der Ausdruck
1,2:2:00:00
Die Planung bezieht sich auf Datensatzaktualisierungen am 2. Tag der ersten und zweiten Woche des Monats um Mitternacht.Der Ausdruck
1:1,2,7:15:30
Für die Planung werden Datensätze am ersten, zweiten und siebten Tag der ersten Woche des Monats (Montag, Dienstag und Sonntag) um 3:30 Uhr aktualisiert
Lademechanismus
Der Benutzer gibt die Implementierung an, welche Objekte aus der Stammdatenquelle geladen werden. Jedes einzelne Datum existiert als Ganzes CacheItem
- beim Cache-Start zum Cache hinzugefügt.
Cache Loader-Wiederholungen
Wenn ein Vorgang beim Laden des Caches fehlschlägt, NCache führt sie aus, bevor sie mit der nächsten fortfährt. Standardmäßig, NCache wiederholt den fehlgeschlagenen Vorgang nicht. Sie können dies jedoch über die aktivieren NCache Management Center.
Cache Loader-Wiederholungsintervall
Wenn der Benutzer Wiederholungsversuche für fehlgeschlagene Vorgänge aktiviert, kann der Benutzer auch das Zeitintervall angeben, das gewartet werden soll (in Sekunden), bevor der fehlgeschlagene Vorgang erneut versucht wird. Das Intervall ist standardmäßig 0. Es ist jedoch durch den Benutzer konfigurierbar NCache Management Center.
Aktualisierungsintervall
Um zu überprüfen, welche Datensätze aktualisiert/aktualisiert werden müssen, wird nach einer bestimmten Zeit, dem so genannten Aktualisierungsintervall, ein Thread ausgeführt. Standardmäßig beträgt das Aktualisierungsintervall 900 Sekunden. Der Mindestwert für dieses Intervall beträgt 1 Sekunde und der Höchstwert 3600 Sekunden. Benutzer können das Aktualisierungsintervall über konfigurieren NCache Management Center.
On-Demand-Dataset-Aktualisierung
Der Benutzer hat auch die Möglichkeit, seine Datensätze manuell über zu aktualisieren Invoke-RefresherDataset cmdlet. Über dieses Cmdlet kann der Benutzer seine Datensätze entweder sofort oder innerhalb der nächsten 24 Stunden mithilfe von aktualisieren RefreshPreference
Option dieses Cmdlets. Diese Option identifiziert, wann diese bedarfsgesteuerte Aktualisierung durchgeführt wird, basierend darauf, ob der Prozess zu einer Verschlechterung führt oder nicht. Wenn nicht, wird der Datensatz aktualisiert RefreshNow
. Wenn dies der Fall ist, wird das Dataset zum nächsten geplanten Zeitpunkt durch aktualisiert RefreshOnNextTimeOfDay
.
Siehe auch
Komponenten von Cache Startup Loader und Refresher
Datenquellenanbieter (Backing Source)
Upgrade NCache Versionen