Übersicht über das Write-Through- und Write-Behind-Caching
NCache unterstützt Write-Through-Caching, das Schreibvorgänge direkt auf der Datenquelle über den Cache ermöglicht. Auf diese Weise können Sie Ihren Cache und die Datenquelle synchronisieren. Beim Write-Through-Caching NCache aktualisiert zuerst den Cache-Speicher und wendet diesen Vorgang dann auf die Datenquelle an. Wenn beispielsweise eine Clientanwendung einen Eintrag im Cache aktualisiert, dann NCache aktualisiert auch die Datenquelle (wenn Durchschreiben aktiviert ist).
Note
Diese Funktion ist nur verfügbar in NCache Enterprise Ausgabe.
Um Write-Through-Caching in Ihrer Anwendung verwenden zu können, müssen Sie zunächst Folgendes implementieren IWriteThruProvider
Schnittstelle. NCache wird diesen benutzerdefinierten Anbieter intern verwenden, um Schreibvorgänge für die Datenquelle auszuführen. NCache ruft Ihren Anbieter hinter API-Aufrufen für Schreibvorgänge (Hinzufügen, Einfügen, Entfernen/Löschen) mit Durchschreiben auf.
Zur Zeit NCache bietet zwei Modi für das Write-Through-Caching:
- Durchschreiben (aktualisiert die Datenquelle synchron)
- Write-Behind (aktualisiert die Datenquelle asynchron)
Note
NCache stellt einen Leistungsindikator bereit Write-thru/sec
für Write-Through-Operationen.
Durchschreiben
Beim Write-Through-Caching wird ein Vorgang zunächst auf den Cache-Speicher angewendet und dann synchron auf die konfigurierte Datenquelle aktualisiert. Bei Verwendung von Write-Through werden Vorgänge anschließend abgeschlossen NCache wendet diesen Vorgang auf die Datenquelle an. Sie können das Write-Through-Caching verwenden, wenn sofortige Datenquellenaktualisierungen von entscheidender Bedeutung sind und Sie die Datenquelle aktualisieren müssen, sobald der Cache aktualisiert wird.
Write-Behind
Beim Durchschreiben entspricht die Rate der Vorgänge aufgrund synchroner Vorgänge in der Datenquelle der Rate der Benutzervorgänge im Cache. Bei Anwendungen mit hohem Benutzerverkehr kann die Rate der Benutzeroperationen im Cache sehr hoch sein, was Ihre Datenquelle überfordern kann. Auch synchrone Datenquellenvorgänge können sich auf die Antwortzeit eines Benutzervorgangs auswirken.
Um diese Probleme zu lösen, kann Write-Behind anstelle von Write-Through verwendet werden. Bei Write-Behind werden die Datenquellenoperationen danach asynchron ausgeführt NCache Führt Vorgänge im Cachespeicher aus. Nach der Aktualisierung des Cache-Speichers werden diese Vorgänge in die Warteschlange gestellt und später asynchron auf die konfigurierten Datenquellen angewendet. Daher wird die Verwendung von Write-Behind die Reaktionszeit der Cache-Vorgänge verbessern.
NCache Bietet verschiedene Konfigurationseinstellungen in Write-Behind, um den Betriebsablauf auf der Datenquelle zu steuern. Sie können beispielsweise die Rate angeben, mit der NCache wendet Write-Behind-Vorgänge durch Drosselung auf die Datenquelle an.
Drosselung
Gibt die Anzahl der Vorgänge an, die pro Sekunde auf die Datenquelle angewendet werden. Der Standardwert für die Drosselung beträgt 500 Vorgänge/Sek. Sie können diesen Wert über die Einstellungen der Sicherungsquelle im ändern NCache Geschäftsführer.
Note
NCache stellt einen Leistungsindikator bereit Write-behind/sec
für Write-Behind-Operationen.
Write-Behind-Modi
NCache ermöglicht Ihnen die Anwendung von Write-Behind-Vorgängen einzeln oder als Stapel. Für Write-Behind-Vorgänge wird eine Write-Behind-Warteschlange verwaltet. Alle Write-Behind-Vorgänge werden in dieser Warteschlange eingereiht und später entsprechend dem unten erläuterten konfigurierten Batch- oder Nicht-Batch-Modus auf die Datenquelle angewendet.
Nicht-Batch-Modus
Standardmäßig wird der Nicht-Batch-Modus für Write-Behind-Vorgänge konfiguriert. In diesem Modus werden Vorgänge in der Write-Behind-Warteschlange entsprechend der konfigurierten Drosselungsrate nacheinander auf die Datenquelle angewendet. Wenn die Drosselungsrate beispielsweise 500 Vorgänge pro Sekunde beträgt, NCache wendet Write-Behind-Vorgänge einzeln auf die Datenquelle an und überschreitet nicht 500 Vorgänge pro Sekunde.
Batch-Modus
Im Batch-Modus wird eine Charge/Masse von Vorgängen entsprechend ihrer Größe ausgewählt operation delay
. Sie können konfigurieren operation delay
für Write-Behind-Vorgänge, der die Zeit in Millisekunden angibt, die jeder Vorgang in der Write-Behind-Warteschlange warten muss, bevor er auf die Datenquelle angewendet wird. Standardmäßig ist der Wert Null.
Das Batch-Intervall ist das konfigurierbare Intervall, nach dem NCache Prüft regelmäßig, ob Vorgänge in der Write-Behind-Warteschlange aufgrund von Zeitüberschreitungen aufgrund von Betriebsverzögerungen vorliegen. Wenn beispielsweise die Betriebsverzögerung auf 1000 ms und das Batch-Intervall auf 5 s konfiguriert ist, NCache prüft alle 5 Sekunden die Vorgänge in der Write-Behind-Warteschlange und wählt alle Vorgänge aus, bei denen die Vorgangsverzögerung abgelaufen ist (alle Vorgänge, die sich die letzten 1000 Millisekunden in der Warteschlange befanden).
Nach der Massenauswahl von Vorgängen werden diese entsprechend der konfigurierten Drosselungsrate auf die Datenquelle angewendet. Angenommen, eine Masse von 1000 Vorgängen wird aus der Write-Behind-Warteschlange ausgewählt, die dann in einem Batch von 500 Vorgängen auf die Datenquelle angewendet wird (wenn die Drosselungsrate 500 Vorgänge/Sek. beträgt), wobei der maximale Vorgang pro Sekunde auf die Datenquelle angewendet wird Der konfigurierte Drosselungswert darf nicht überschritten werden.
Sie können eine Verzögerungszeit für den Vorgang angeben, die von Sekunden bis zu Tagen und Monaten reicht. Auf diese Weise können Sie Ihre Vorgänge an der Datenquelle in einem konfigurierbaren Zeitraum anhalten. NCache Bietet außerdem Leistungsindikatoren für die Write-Behind-Warteschlange, die Anzahl der Vorgänge und die Anzahl der aktuellen Batch-Vorgänge. Wenn für Write-Behind die Stapelverarbeitung aktiviert ist, werden Vorgänge, die zur Ausführung auf der Datenquelle bereit sind, aus der Write-Behind-Warteschlange entfernt.
Note
Die Anzahl der im aktuellen Batch-Intervall aus der Warteschlange entfernten Vorgänge wird angezeigt Zähler für die aktuelle Batch-Vorgangsanzahl.
Hot Apply-Unterstützung für Write-Behind-Konfiguration
NCache unterstützt Hot-Applicable-Write-Behind-Einstellungen, die es Ihnen ermöglichen, Write-Behind-Konfigurationen zur Laufzeit zu ändern, ohne den Cache anzuhalten. Sie können konfigurierbare Write-Behind-Attribute über ändern NCache Manager und NCache wird diese Änderungen dynamisch übernehmen.
Bei der Hot-Apply-Unterstützung können Sie den Write-Behind-Modus von Batch in Nicht-Batch und umgekehrt ändern. Wenn Sie beispielsweise den Batch-Modus auf „Nicht-Batch“ geändert haben, dann NCache ignoriert den Wert der Operationsverzögerung und startet die Ausführung der Operationen einzeln. Außerdem können Sie die Drosselungsrate zur Laufzeit je nach Bedarf ändern. Ebenso können sich die Betriebsverzögerung, das Batch-Intervall, das Warteschlangenlimit für fehlgeschlagene Vorgänge und das Räumungsverhältnis für fehlgeschlagene Vorgänge ebenfalls zur Laufzeit ändern.
Warnung
Sie können nur den Wert der Warteschlangengrenze für fehlgeschlagene Vorgänge erhöhen; ansonsten, NCache verwendet für weitere Vorgänge seinen Standardwert.
Write-Behind in einer Cluster-Umgebung
Da für Write-Behind-Vorgänge eine Write-Behind-Warteschlange verwaltet wird, führt ein separater dedizierter Thread-Monitor seinen Vorgang aus. Die Details der Topologieebene für Write-Behind sind unten aufgeführt:
Replizierte Topologie: Die Write-Behind-Warteschlange wird auf allen Knoten verwaltet, der asynchrone Write-Behin-Prozessor ist jedoch nur auf dem Koordinatorknoten vorhanden. Dies bedeutet, dass alle Write-Behind-Vorgänge über diesen Knoten ausgeführt und auf andere Knotenwarteschlangen im gesamten Cluster repliziert werden. Wenn ein Knoten ausfällt, führt auf diese Weise der nächste Koordinatorknoten alle verbleibenden Schreiboperationen aus.
Partitionierte-replizierte Topologie: Die Write-Behind-Warteschlange wird auf jedem aktiven Knoten verwaltet und auch auf die entsprechenden Replikate repliziert. Jeder Knoten ist für seinen Write-Behind-Vorgang an der Datenquelle verantwortlich.
Gespiegelte Topologie: Die Write-Behind-Warteschlange wird sowohl auf aktiven als auch auf passiven Knoten verwaltet, aber nur der aktive Knoten ist für die Ausführung von Write-Behind-Vorgängen verantwortlich. Wenn der aktive Knoten ausgefallen ist, wird der passive Knoten ebenfalls aktiv und führt die verbleibenden Write-Behind-Vorgänge aus.
Partitionierte Topologie: Die Write-Behind-Warteschlange wird auf jeder Partition verwaltet und jeder Knoten ist für seine Write-Behind-Vorgänge an der Datenquelle verantwortlich.
Ergebnis des Caching-Vorgangs
NCache bietet Ihnen die Flexibilität, Durchschreibvorgänge im Cache auf der Grundlage ihres Vorgangsergebnisses zu synchronisieren. Nachdem Sie einen Vorgang (Hinzufügen/Einfügen) auf die Datenquelle angewendet haben, können Sie den Vorgangsstatus auf dessen Grundlage angeben NCache synchronisiert den Cache-Speicher. Wenn beispielsweise der Datenquellenvorgang fehlschlägt, können Sie entscheiden, ob diese Daten aus dem Cache entfernt oder behalten werden sollen. Sie können diesen Vorgang auch für die Datenquelle wiederholen. Hierzu müssen Sie angeben Success
/Failure
/FailureRetry
/FailureDontRemove
as
OperationResult.Status
of OperationResult
. Dies wird sowohl beim Write-Through- als auch beim Write-Behind-Caching bereitgestellt.
Betriebsstatus der Datenquelle und die entsprechenden Aktionen von NCache sind im Folgenden beschrieben:
Erfolge: Dies bedeutet, dass der Datenquellenvorgang erfolgreich war und das Element der Datenquelle hinzugefügt wurde NCache wird es auch im Cache behalten.
Scheitern: Dies bedeutet, dass der Datenquellenvorgang fehlgeschlagen ist und das Element nicht zur Datenquelle hinzugefügt werden konnte NCache wird es auch aus dem Cache entfernen.
FehlerDontRemove: Dies bedeutet, dass der Datenquellenvorgang fehlgeschlagen ist und das Element nicht zur Datenquelle hinzugefügt werden konnte NCache wird es im Cache behalten.
FehlerWiederholen: Dies bedeutet, dass der Datenquellenvorgang fehlgeschlagen ist und das Element nicht zur Datenquelle hinzugefügt werden konnte NCache Das Element bleibt im Cache und es wird erneut versucht. Wiederholungsversuche werden als Write-Behind-Vorgänge durchgeführt.
Fehlgeschlagene Vorgänge wiederholen
NCache ermöglicht es Ihnen, Vorgänge im Write-Through/Write-Behind zu wiederholen, falls sie in der Datenquelle fehlschlagen. Zu diesem Zweck aktivieren Sie die Wiederholung des Vorgangs NCache wird diesen Vorgang für die Datenquelle wiederholen. Im Falle von Write-Through oder Write-Behind werden alle Wiederholungsversuche erneut in die Write-Behind-Warteschlange eingereiht, was bedeutet, dass ein Write-Through-Wiederholungsvorgang asynchron als Write-Behind-Vorgang wiederholt wird.
Note
NCache Bietet auch einen Leistungsindikator für Datasource failed operations/sec
. Schreibvorgänge, die für die zurückgegebene Datenquelle ausgeführt werden Failure
/FailureRetry
/FailureDontRemove
as OperationResult.Status
of
OperationResult
werden von diesem Zähler pro Sekunde gezählt.
NCache ermöglicht es Ihnen, die Anzahl der fehlgeschlagenen Vorgänge zu begrenzen, die wiederholt werden sollen. In einer solchen Situation geben Sie das Warteschlangenlimit für fehlgeschlagene Vorgänge im an
NCache Wenn dieser Grenzwert überschritten wird, können Sie fehlgeschlagene Vorgänge über ein konfigurierbares Räumungsverhältnis entfernen. Hier, NCache verwirft die meisten wiederholten Vorgänge, wenn die Wiederholungswarteschlange voll ist. Jede Operation hat eine RetryCount
Damit verbundene Eigenschaft, die bei jedem erneuten Vorgang für die Datenquelle erhöht wird.
Dafür, NCache Bietet einen Leistungsindikator für
Write-behind failure retry count
und Write-behind evictions/sec
dem „Vermischten Geschmack“. Seine Write-behind failure retry count
Zeigt die Anzahl der Vorgänge an, die für einen erneuten Versuch in die Warteschlange gestellt wurden. Schreibvorgänge der Datenquelle werden zurückgegeben FailureRetry
as Status
in OperationResult
wird für einen erneuten Versuch erneut in die Warteschlange gestellt. Wohingegen, Write-behind evictions/sec
Der Zähler zeigt die Anzahl der Wiederholungsvorgänge an, die pro Sekunde entfernt werden.
Aktualisieren des Caches nach dem Datenquellenvorgang
Wie bereits erwähnt, wird beim Write-Through-Caching der Vorgang zuerst im Cache-Speicher und dann in der Datenquelle ausgeführt. Es kann vorkommen, dass Daten nach der Durchführung von Vorgängen an der Datenquelle geändert werden, z. B. im Fall von Identitätsspalten kann deren Wert durch den Datenquellenvorgang geändert werden. In einer solchen Situation können Daten im Cache und in der Datenquelle inkonsistent werden. Um damit umzugehen, NCache Mit dieser Option können Sie angeben, ob Daten im Cache nach Datenquellenvorgängen aktualisiert werden sollen oder nicht. Sie können aktivieren UpdateInNCache
Flag, um den Vorgang (Hinzufügen/Einfügen) erneut im Cache-Speicher auszuführen, um ihn mit der Datenquelle zu synchronisieren, sodass Vorgänge im Cache-Speicher synchron durch Write-Through oder asynchron durch Write-Behind-Caching aktualisiert werden.
Note
NCache bietet auch einen Leistungsindikator Datasource updates/sec
Hier wird die Anzahl der Aktualisierungsvorgänge pro Sekunde im Cache nach Schreibvorgängen der Datenquelle angezeigt.
In diesem Abschnitt
Write-Thru-Anbieter konfigurieren
Erklärt die Write-Through-Provider-Schnittstelle und stellt eine Beispielimplementierung für die Schnittstelle bereit.
Write-Thru mit Cache-Operationen
Stellt Beispiele für die Verwendung von Write-Through mit grundlegenden Vorgängen bereit NCache.
Write-Behind mit Cache-Operationen
Stellt Beispiele für die Verwendung von Write-Behind mit grundlegenden Vorgängen bereit NCache.
Write-Thru-Zähler überwachen
Beschreibt die von bereitgestellten Leistungsindikatoren NCache um das Write-Through-Caching zu überwachen.