Fehlerbehandlung im Cache
Es gibt Szenarien, wo NCache Clientvorgänge können aufgrund verschiedener Fehler fehlschlagen, wie unten gezeigt.
Der angegebene Schlüssel ist im Cache vorhanden
- Art der Ausnahme:
OperationFailedException
Ihre Nachricht: „Der angegebene Schlüssel ist bereits im Cache vorhanden.“
Grund: Diese Ausnahme ist spezifisch für die Speichern API, wenn derselbe Schlüssel mit dem Objekt verwendet wird. Die Operation fügt dem Cache nur dann ein Element hinzu, wenn der angegebene Schlüssel vorher nicht existiert. Es fügt dem Cache zum ersten Mal Daten hinzu, wenn der Schlüssel nicht im Cache vorhanden ist.
Sie können dies je nach Ihren Geschäftsanforderungen auf folgende Weise handhaben:
- Geben Sie einen neuen Schlüssel für das Objekt an, das Sie hinzufügen möchten.
- Verwenden Sie die Insert API, wenn derselbe Schlüssel mit dem Objekt verwendet wird.
- Verwenden Sie die Entfernen API, wenn derselbe Schlüssel mit dem Objekt verwendet wird. Entfernen Sie zuerst das Objekt und fügen Sie es dann mit demselben Schlüssel erneut zum Cache hinzu.
Verbindungsfehler
- Art der Ausnahme:
OperationFailedException
Ihre Nachricht: "Der Vorgang wurde aufgrund eines Verbindungsverlusts zwischen dem Server und dem Client unterbrochen."
Grund: Vorgänge können fehlschlagen, falls eine Verbindung zwischen dem Server und dem Client unterbrochen wird. Dies kann auf einen Netzwerkfehler oder eine physische Unterbrechung zwischen Client und Server zurückzuführen sein.
Diese Ausnahme kann auftreten, wenn eine bereits hergestellte Verbindung mit dem Server unterbrochen wird. In einem solchen Fall wird empfohlen, zuerst die Netzwerkursache zu beheben und dann den Vorgang zu wiederholen, wenn er dringend benötigt wird.
Kein Server zum Verarbeiten der Anfrage verfügbar
- Art der Ausnahme:
OperationFailedException
Ihre Nachricht: "Es ist kein Server verfügbar, um die Anfrage zu verarbeiten".
Grund: Diese Ausnahme kann auftreten, wenn der Cache aufgrund von Unterbrechungen und Unzugänglichkeit nicht verfügbar ist.
Betriebszeitüberschreitung
- Art der Ausnahme:
OperationFailedException
Ihre Nachricht: "Zeit abgelaufen für Vorgang."
Grund: Bei umfangreichen Transaktionen auf dem Server können eingehende Client-Operationen in eine Warteschlange gestellt werden, während der Server die aktuellen Operationen verarbeitet. Jeder Cache-Client-Operation ist ein konfigurierbarer Timeout-Wert zugeordnet. Das bedeutet, dass, wenn der Cache-Server nicht innerhalb der vorgegebenen Zeit auf die Operation antwortet, die Operation als fehlgeschlagen betrachtet wird, obwohl sie in dieser Hinsicht nicht wirklich fehlgeschlagen – oder erfolgreich – war.
Es wird nicht empfohlen, einen Vorgang mit Zeitüberschreitung sofort erneut zu versuchen, da dies immer noch zu einer erneuten Zeitüberschreitung führen kann, wenn der Server noch mit der Verarbeitung der vorherigen Vorgänge beschäftigt ist. Daher wird dies empfohlen wenn Ihr Unternehmen dies zulässt, verlängern Sie den Timeout-Wert, bevor Sie den Vorgang wiederholen.
In NCache, beträgt der Standardwert für das Zeitlimit 90 Sekunden, in denen ein Clientvorgang abgeschlossen sein muss. Falls Sie möchten, dass der Vorgang länger wartet, können Sie die konfigurieren client-request-timeout
Wert von der client.ncconf Datei.
Während der Zustandsübertragung durchgeführter Vorgang
- Art der Ausnahme:
OperationFailedException
Ihre Nachricht: „Der Vorgang konnte aufgrund einer staatlichen Übergabe nicht abgeschlossen werden.“
Grund: Sobald sich der Verteilungsstatus des Clusters ändert, ist eine sofortige Datenkonsistenz im gesamten Cluster erforderlich, insbesondere bei partitionierten Topologien und Partitionsreplikat-Topologien. Diese Zustandsänderung tritt auf, wenn Knoten dem Cluster beitreten oder ihn verlassen. Das heißt, sobald ein Knoten dem Cluster beitritt, muss der neu hinzugefügte Knoten entsprechend der Verteilung mit den Daten des Caches versorgt werden. Wenn ein Knoten den Cluster verlässt, werden die Daten ebenfalls auf die verbleibenden Knoten verteilt.
Um diesem Problem gerecht zu werden, NCache initiiert intern eine Zustandsübertragung – einen Datenübertragungsmechanismus auf Knotenebene, der ausgelöst wird, nachdem die Verteilung von Daten über einen geclusterten Cache geändert wurde.
Eine Statusübertragung kann zwischen zwei Knoten eines einzelnen Clusters erfolgen, wobei Daten Bucket für Bucket übertragen werden. Der anfordernde Knoten initiiert die Statusübertragung, indem er diesen bestimmten Bucket sperrt. Alle Vorgänge, die während der Statusübertragung an diesem Bucket ausgeführt werden, werden protokolliert. Diese Vorgänge können zu Duplikaten oder weniger Ergebnissen als erwartet führen, da während der Übertragung möglicherweise derselbe Bucket auf beiden Knoten vorhanden ist oder nicht. Sobald ein Bucket vollständig übertragen wurde, werden die protokollierten Vorgänge an den anfordernden Knoten übertragen.
Es wird empfohlen, die State Transfer PerfMon-Zähler für Ihren Cache nach jeder Änderung im Cluster zu überwachen. Sobald die Zähler anzeigen, dass die Zustandsübertragung abgeschlossen ist, können Sie mit der Durchführung von Vorgängen im Cache fortfahren.
Siehe auch
So stellen Sie eine Verbindung zum Cache her
Daten zum Cache hinzufügen
Vorhandene Cache-Daten abrufen
Daten aus dem Cache entfernen
Cache erstellen