Ereignisbenachrichtigungen im Cache: Ein Überblick
In einem verteilten Caching-Paradigma muss Ihre Client-Anwendung möglicherweise über die Vielzahl von Vorgängen benachrichtigt werden, die im Cache stattfinden. NCache kann verschiedene Arten von Ereignissen generieren, während Ihre Client-Anwendungen sich für interessante Ereignisse registrieren können, um benachrichtigt zu werden.
Note
Diese Funktion ist nur verfügbar in NCache Enterprise.
Hier sind einige wichtige Punkte im Zusammenhang mit Ereignissen im Cache:
- Ein Ereignis wird nur generiert, wenn sich eine Client-Anwendung dafür registriert hat.
- Ein Ereignis wird nur für abonnierte Clients veröffentlicht.
- Der Cache bestimmt, wann ein Ereignis ausgelöst wird, und der Client bestimmt die als Reaktion auf ein Ereignis auszuführende Aktion.
- Ein Client kann sich für mehrere Ereignisse registrieren und kann auch mehrere Ereignisse aus mehreren Caches verarbeiten.
Note
Eine Anwendung kann keine Ereignisse empfangen, es sei denn, sie registriert sich mithilfe des spezifischen API-Aufrufs zur Ereignisregistrierung im Cache.
Bedeutung von Ereignisbenachrichtigungen im Cache
Viele Anwendungen müssen heute Daten zur Laufzeit asynchron miteinander teilen, um Datenintegrität zu gewährleisten. Außerdem müssen sie ihren Datenstatus aktualisieren oder den Snapshot der Daten mit dem serverseitigen Status synchronisieren. Daher benötigt die Anwendung einen Mechanismus, um ihren Datenstatus mit dem Server zu überwachen. Ereignisbenachrichtigungen stellen diesen Mechanismus bereit, um die Client-Anwendung jedes Mal zu benachrichtigen, wenn Daten im Cache geändert werden.
Daher erlauben Ereignisse gemeinsame Nutzung von Laufzeitdaten zwischen separaten Anwendungen oder separaten Modulen derselben Anwendung. Darüber hinaus wird das ereignisgesteuerte Abrufen von Daten unterstützt von NCache ermöglicht es Client-Anwendungen, Daten ohne explizite Datenabrufanforderung an den Cache-Server zu empfangen.
Veranstaltungen in NCache
Ereignisse können für Aktivitäten auf Cache-Ebene ausgelöst werden, die sich speziell auf Daten oder Verwaltungsvorgänge beziehen. Hier kategorisieren wir Ereignisse und besprechen relevante Details.
Datenspezifische Ereignisse
Wie der Name schon sagt, werden diese Ereignisse ausgelöst, wenn Daten im Cache aufgrund von geändert werden hinzufügen, Aktualisierung, oder entfernen Operationen. Abgesehen von diesen grundlegenden CRUD-Vorgängen werden auch datenspezifische Ereignisse ausgelöst, wenn Daten aufgrund von hinzugefügt, aktualisiert oder aus dem Cache entfernt werden Cache-Startup-Loader/Refresher und Hintergrundquelle.
Um diese Ereignisse zur Benachrichtigung zu registrieren, muss die MessagingService.RegisterCacheNotification
Methode verwendet wird. Ebenso können datenspezifische Benachrichtigungen einfach abgemeldet werden, wenn sie nicht mehr benötigt werden MessagingService.UnRegisterCacheNotification
Methode.
Sie müssen das entsprechende angeben EventType
bei der Anmeldung zu datenspezifischen Veranstaltungen mit Ereignistyp Aufzählung. Folgende Benachrichtigungen können basierend auf registrierten ausgelöst werden EventType
:
Benachrichtigung hinzufügen: Die Benachrichtigung „Hinzufügen“ wird ausgelöst, wenn die
ItemAdded
Der Ereignistyp wird registriert und ein neues Element wird zum Cache hinzugefügt.Update-Benachrichtigung: Die Update-Benachrichtigung wird ausgelöst, wenn die
ItemUpdated
Der Ereignistyp wird registriert und ein vorhandenes Element im Cache aktualisiert.Benachrichtigung entfernen: Die Entfernungsbenachrichtigung wird ausgelöst, wenn die
ItemRemoved
Der Ereignistyp wird registriert und ein Element wird aus dem Cache entfernt.
Sie können auch die Informationen steuern, die bei einer Ereignisausführung zurückgegeben werden, indem Sie verwenden Ereignisdatenfilter was weiter diskutiert wird in Ereignisfilter .
Datenspezifische Ereignisse können wie folgt weiter kategorisiert werden:
Ereignisse auf Cache-Ebene
Ereignisse auf Cache-Ebene sind allgemeine Ereignisse für den Cache, die bei der Ausführung von ausgelöst werden Speichern, Aktualisierung, oder Entfernen Operationen auf Cache-Daten. Der Zweck besteht darin, verschiedene Clients über jede auf dem Cache ausgeführte Operation zu benachrichtigen.
Warnung
Cache-Level-Ereignisse können Ihre Anwendungsleistung beeinträchtigen, wenn Benachrichtigungen für alle Vorgänge im gesamten Cache-Dataset registriert werden.
Standardmäßig sind Cache-Level-Ereignisse für jede Cache-Konfiguration deaktiviert (mit Ausnahme des Cache-Löschvorgangs) und müssen aktiviert werden, damit Ereignisse mit veröffentlicht werden können NCache Management Center.
Ereignisse auf Artikelebene
Ereignisse auf Artikelebene kann nützlich sein, wenn Sie über einen begrenzten Datensatz benachrichtigt werden möchten und nicht über jede Operation, die im Cache ausgeführt wird. Wenn der Cache beispielsweise eine große Datenmenge enthält und jedes Mal benachrichtigt wird, wenn eine Änderung im Datensatz auftritt, verursacht dies Overhead und die Leistung der Anwendung wird beeinträchtigt.
Note
Für eine bessere Leistung können Sie Benachrichtigungen nur für den interessierenden Datensatz registrieren.
Der Cache ist für die Überwachung von Änderungen für die angegebenen Schlüssel verantwortlich. Da der ausgewählte Datensatz bereits im Cache vorhanden ist, werden Ereignisse auf Elementebene nur beim Aktualisierungs- oder Entfernungsvorgang empfangen. Anwendungen registrieren Rückrufmethoden für einen bestimmten Schlüssel im Cache mithilfe von API-Aufrufen und erhalten eine Benachrichtigung, wenn dieser Schlüssel aktualisiert oder aus dem Cache entfernt wird. Diese Benachrichtigungen werden asynchron an den Client gesendet, sodass für die Aktivitäten des Clients kein Overhead entsteht.
Note
Da Ereignisse auf Elementebene für Datensätze registriert werden, die sich bereits im Cache befinden, kann keine Benachrichtigung über das Hinzufügen empfangen werden.
Veranstaltungen auf Managementebene
Veranstaltungen auf Managementebene kann sich registrieren, um benachrichtigt zu werden, wenn mithilfe des Cache-Clusters ein Verwaltungsvorgang ausgeführt wird Benachrichtigungsdienst Schnittstelle.
Diese Ereignisse können zur Validierung verwendet werden, um festzustellen, ob Vorgänge im Cache fortgesetzt werden oder nicht. Der Client ist beispielsweise eine Multithread-Anwendung, bei der ein Thread dem Einfügen von Elementen mit einer konstanten Rate gewidmet ist. Wenn der Cache während des Einfügens gestoppt wird, wird der NCache Client wird werfen OperationFailedException
. Um zu verhindern, dass die Ausnahme ausgelöst wird, muss der Thread beim Stoppen des Caches entsprechende Maßnahmen ergreifen. Dies kann einfach durch die Registrierung für ein Ereignis gegen Cache-Stopp-Aktion erreicht werden.
Dieses Beispiel gilt auch für Benachrichtigungen zum Löschen des Caches, wenn der Thread der Clientanwendung Vorgänge während seiner Ausführung validiert, während der Cache geleert wird. Alle Validierungen schlagen fehl, wenn die Clientanwendung ein Ereignis zum Löschen des Caches nicht berücksichtigt.
Die folgenden Benachrichtigungen werden ausgelöst, wenn Verwaltungsvorgänge für den Cache ausgeführt werden:
Benachrichtigung über gelöschten Cache: Die Benachrichtigung „Cache geleert“ wird ausgelöst, wenn der Cache geleert wird.
Benachrichtigung über angehaltenen Cache: Die Cache-Stopp-Benachrichtigung wird ausgelöst, wenn der Cache gestoppt wird. Wenn eine Anwendung weiterhin Vorgänge ausführt, wenn der Cache angehalten wird, ohne zu wissen, dass der Cache angehalten wurde, wird eine Ausnahme für die durchgeführten Vorgänge ausgelöst.
Mitgliedsbeitrittsbenachrichtigung: Die Benachrichtigung über den Beitritt eines Mitglieds wird ausgelöst, wenn ein Mitglied dem Cluster beitritt. Ein Cache-Administrator oder ein Benutzer, der den Zustand des Caches während des Betriebs überwacht, könnte seine Aufgaben zur Überwachung des Zustands des Clusters automatisieren. Wenn also ein Mitglied dem Cluster beitritt, sollte das Ereignis behandelt werden, um eine Unterbrechung der automatisierten Aufgaben zu verhindern.
Benachrichtigung über das Verlassen des Mitglieds: Die Benachrichtigung über das Verlassen eines Mitglieds wird ausgelöst, wenn ein Mitglied den Cluster verlässt.
Client-Aktivitätsereignisse
Clientaktivitätsereignisse benachrichtigen die Verbindung/Trennung von Clients. Jeder Client, der mit einem Cluster-Cache verbunden ist, kann diese Ereignisse abonnieren, um über die Verbindungs-/Trennungsereignisse anderer Clients benachrichtigt zu werden.
Sie können auch den Aufbewahrungszeitraum angeben. Dabei handelt es sich um die Zeit, nach der ein getrennter Client als getrennt betrachtet wird und sein Trennungsereignis ausgelöst wird. Wenn ein Client innerhalb des Aufbewahrungszeitraums eine erneute Verbindung herstellt, wird sein Trennungsereignis nicht ausgelöst.
Dies soll etwaige versehentliche Verbindungsabbrüche aufgrund fehlerhafter Netzwerke seit dem kompensieren NCache Der Client stellt in solchen Netzwerken automatisch wieder eine Verbindung her, ohne den Clientbetrieb zu unterbrechen. Beachten Sie, dass dies nicht für Clients gilt, die sich manuell entsorgen und neu initialisieren.
Du brauchst Aktivieren Sie Benachrichtigungen über Client-Aktivitäten in NCache Management Center vor Gebrauch.
Ereignisdatenfilter
NCache bietet EventDataFilter
um die Menge an Informationen zu steuern, die bei der Ausführung datenspezifischer Ereignisse zurückgegeben werden. Die Arten von Ereignisfiltern werden unten erläutert.
Warnung
Ereignisdatenfilter müssen sorgfältig eingestellt werden, um eine unnötige Nutzung der Netzwerkbandbreite zu vermeiden.
Andere
Dieser Filter gibt nur die Schlüssel zurück, die von der Operation in der Ereignisbenachrichtigung betroffen sind. Dies wird verwendet, wenn die Anwendung nur wissen möchte, welche Schlüssel betroffen sind. Beispielsweise möchte eine E-Commerce-Site wissen, welche Produktschlüssel hinzugefügt wurden, und nicht die Werte selbst.
Metadaten
Mit diesem Filter werden die betroffenen Schlüssel zusammen mit ihren Metadaten in der Ereignisbenachrichtigung zurückgegeben. Die zurückgegebenen Metadaten enthalten die Gruppe, Cache-Elementpriorität, Ablauf, CacheItemVersion, ResyncOptions, CacheItemRemovedReason und Eintragstyp. Diese Informationen können vom Benutzer benötigt werden. Zum Beispiel, wenn eine Anwendung wissen möchte, welche Schlüssel aus dem Cache entfernt wurden und zu welchen Gruppen sie gehörten.
DatenMitMetadaten
Dieser Filter gibt die Schlüssel zusammen mit den zwischengespeicherten Elementen und den zugehörigen Metadaten zurück. Dies kann in Fällen verwendet werden, in denen eine Anwendung die geänderten Daten verarbeiten muss. Beispielsweise kann es für eine Bankanwendung erforderlich sein, zu wissen, welche Kundendaten geändert wurden. Daher können mit diesem Filter Benachrichtigungen für Elementaktualisierungsvorgänge registriert werden, sodass der Elementschlüssel und das geänderte Element auch an den Benutzer zurückgegeben werden, sobald das Ereignis ausgelöst wird.
Verwendung der DataWithMetadata
Der Filter speichert eine Reise, wenn Artikel erneut mit dem abgerufen werden Erhalten Sie API. Dieser Filter muss jedoch bei Bedarf verwendet werden, da er bei großen zurückgegebenen Datenmengen zu einer Überlastung des Netzwerks führen kann.
Warnung
Im Falle einer Client-Trennung werden die Ereignisse während der Zeitspanne der Trennung des Clients nicht protokolliert.
Topologieweises Verhalten
Ereignisbenachrichtigungen werden entsprechend der verwendeten Cache-Topologie ausgelöst. Das topologiebezogene Verhalten für Ereignisbenachrichtigungen wird wie folgt beschrieben:
Spiegeltopologie: In der Spiegeltopologie ist ein aktiver Knoten des Clusters für die Benachrichtigung des Clients über das Ereignis verantwortlich.
Replizierte Topologie: In der replizierten Topologie ist der Knoten im Cluster, der mit dem Client verbunden ist, für das Auslösen der Ereignisbenachrichtigungen verantwortlich.
Partitions-Replikat-Topologie: In der Partition-Replica-Topologie werden Ereignisse von den aktiven Knoten ausgelöst. Der Knoten, auf dem sich kriterienbasierte Daten befinden, ist für Ereignisbenachrichtigungen verantwortlich.
Partitionierte Topologie: In der partitionierten Topologie werden Ereignisse von allen Knoten ausgelöst. Der Knoten, auf dem sich kriterienbasierte Daten befinden, ist für Ereignisbenachrichtigungen verantwortlich.
Siehe auch
.NETZ: Alachisoft.NCache.Laufzeitereignisse Namespace.
Java: com.alachisoft.ncache.Veranstaltungen Namespace.
Node.js: EventCacheItem Klasse.
Python: ncache.runtime.caching.events Klasse.