StreamInsight-Stabilität

Für den Fall, dass die Verarbeitung von Ereignissen durch eine StreamInsight-Anwendung durch einen Systemausfall unterbrochen wird, bestehen meist Anforderungen an die Qualität und Aktualität der Anwendungsausgabe nach der Wiederherstellung.

  1. Der Inhalt der Ausgabedatenströme soll keine Auswirkungen des Ausfalls widerspiegeln.

  2. Die Dauer des Ausfalls soll möglichst kurz sein.

Die Premium Edition von StreamInsight stellt eine Prüfpunktfunktion bereit, über die der Status von Abfragen regelmäßig auf Datenträgern gespeichert werden kann. Diese Funktion können Sie mit verwandten Funktionen von Eingabe- und Ausgabeadaptern verwenden, um nach der Wiederherstellung nach einem Ausfall die Äquivalenz des Ausgabedatenstroms zu erzielen. Da ordnungsgemäß geschriebene Eingabeadapter nur die verpassten Ereignisse seit Erfassung des letzten Prüfpunkts wiedergeben, ist der zeitliche Aufwand für die Wiederherstellung minimal.

In diesem Thema

  • Prüfpunkte

  • Drei Stabilitätsebenen

  • Obergrenzenmarkierungen

  • Ereignisse und Statusangaben, die nicht durch die Prüfpunktausführung gespeichert werden können

  • Wiedergabe durch Eingabeadapter

  • Entfernung von Duplikaten durch Ausgabeadapter

  • Weitere Informationen

Prüfpunkte

Ein StreamInsight-Prüfpunktvorgang behält den Status einer Abfrage konsistent auf einem Datenträger bei. Nach einem Ausfall kann die Abfrage dann mit dem Status des Prüfpunkts wiederhergestellt werden.

Die Prüfpunktausführung allein gewährleistet nicht, dass der Ereignisdatenstrom, der von einer Abfrage ohne Systemausfälle erzeugt wird, äquivalent mit dem Ereignisstrom ist, der nach einem Ausfall generiert wird. Zwei Probleme können sich auf diese Äquivalenz auswirken:

  • Ereignisse können verpasst werden. Die von StreamInsight nach dem Prüfpunkt empfangenen Ereignisse und die Ereignisse, die zwischen einem Ausfall und der Wiederherstellung eintreten, werden von einem Prüfpunkt nicht erfasst. Diese Ereignisse müssen dem Server erneut präsentiert werden, um in die Abfrageausgabe eingeschlossen zu werden. Um dieses Problem zu lösen, müssen Eingabeadapter verwendet werden, die die verpassten Ereignisse wiedergeben können.

  • Ereignisse können dupliziert werden. Die von StreamInsight nach dem letzten Prüfpunkt und vor dem Ausfall erzeugten Ereignisse werden während der Wiederherstellung nach dem Ausfall erneut erstellt, wenn die Eingabeadapter die Ereignisse erwartungsgemäß wiedergeben. Um dieses Problem zu lösen, müssen Ausgabeadapter verwendet werden, die diese doppelten Ereignisse entfernen können.

Das Prüfpunktprotokoll ist der Satz von Dateien, die die beibehaltenen Prüfpunktinformationen enthalten. Das Protokoll wird in einem Verzeichnis gespeichert, das Sie beim Konfigurieren des Servers für Stabilität angeben. Dieses Verzeichnis sollte nur für die Verwendung von StreamInsight reserviert und als nicht transparent behandelt werden.

[OBEN]

Drei Stabilitätsebenen

Es gibt drei Stabilitätsebenen, die Sie mit StreamInsight erzielen können. Die Auswahl der Ebene hängt von Ihren Anforderungen und davon ab, ob vorhandene Anwendungen und Adapter geändert werden können.

  1. Statusbeibehaltung. Sie können Prüfpunkte verwenden, um den Status von Abfragen zu speichern, ohne Eingabe- oder Ausgabeadapter zu ändern. Diese Stabilitätsebene gewährleistet nicht, dass der resultierende Datenstrom nach der Wiederherstellung aufgrund eines Systemausfalls äquivalent mit dem Datenstrom ist, der ohne Ausfall vorhanden wäre. Dies liegt daran, dass die Ereignisse, die nach dem letzten Prüfpunkt eintraten, verloren gingen. Dies kann jedoch in Situationen akzeptabel sein, in denen keine äquivalenten Ergebnisse benötigt werden und eine nahezu korrekte Ausgabe durch Teileingaben erzielt werden kann.

  2. Vollständige Ausgabe. Sie können sicherstellen, dass keine Ereignisse verpasst werden, indem Sie die Eingabeadapter zur Wiedergabe von Ereignissen ändern. Der Ausgabedatenstrom einer wiederhergestellten Abfrage ist logisch äquivalent mit einer Obermenge der Ausgabedatenstroms einer nicht unterbrochenen Abfrage, und die zusätzlichen Ereignisse sind Duplikate der Ereignisse im nicht unterbrochenen Datenstrom.

  3. Äquivalente Ausgabe. Sie können eine logisch äquivalente Ausgabe sicherstellen, indem Sie die Eingabeadapter ändern und auch die Ausgabeadapter so ändern, dass doppelte Ereignisse entfernt werden.

[OBEN]

Obergrenzenmarkierungen

Die Obergrenzenmarkierung ist die höchste Anwendungszeit bis zu einem bestimmten Punkt im Ereignisdatenstrom. Wenn ein Prüfpunkt angefordert wird, erfasst StreamInsight einen Prüfpunkt an der Obergrenzenmarkierung der einzelnen Eingaben.

[OBEN]

Ereignisse und Statusangaben, die nicht durch die Prüfpunktausführung gespeichert werden können

Um die Voraussetzungen für Ausgaben, die nach der Wiederherstellung aufgrund eines Systemausfalls vollständig und äquivalent sind, richtig zu verstehen, sollten Sie die Ereignisse und den Status kennen, die von der StreamInsight-Prüfpunktausführung nicht gespeichert werden können. Diese Ereignisse und dieser Status müssen getrennt beibehalten werden, damit sie nach der Wiederherstellung nach einem Systemausfall verfügbar sind.

Ereignisse oder Statusangaben, die nicht durch die Prüfpunktausführung gespeichert werden können

Lösung

Ereignisse, die nach dem letzten Prüfpunkt und vor dem Ausfall eintreffen

Diese Ereignisse müssen in einem Datenspeicher beibehalten werden, damit sie nach der Wiederherstellung nach einem Systemausfall wiedergegeben werden können.

Ereignisse, die während des Ausfalls eintreffen

Diese Ereignisse müssen in einem Datenspeicher beibehalten werden, damit sie nach der Wiederherstellung nach einem Systemausfall verfügbar sind.

Bekannte Ereignisse, die als Ausgabe nach dem letzten Prüfpunkt und vor dem Ausfall erzeugt wurden

Diese Ereignisse müssen in einem Datenspeicher beibehalten werden, damit die Ausgabeadapter doppelte Ereignisse nach der Wiederherstellung entfernen können.

Jeder Status von benutzerdefinierten Eingabe- oder Ausgabeadaptern

Dieser Status muss durch die benutzerdefinierten Eingabe- oder Ausgabeadapter in einem Datenspeicher beibehalten werden, damit er nach der Wiederherstellung nach einem Systemausfall verfügbar ist.

[OBEN]

Wiedergabe durch Eingabeadapter

Wenn eine StreamInsight-Anwendung nach einem Systemausfall erneut gestartet wird, stellt der Aufruf der Create-Methode der Eingabeadapterfactory die Obergrenzenmarkierung für die Adapterfactory bereit. (Die Adapterfactory muss die IHighWaterMarkInputAdapterFactory-Schnittstelle oder die IHighWaterMarkTypedInputAdapterFactory-Schnittstelle implementieren, um diese Informationen zu erhalten.) Es wird davon ausgegangen, dass der Eingabeadapter den Eingabedatenstrom ab der Obergrenzenmarkierung wiedergibt.

Eine ordnungsgemäße Wiedergabe durch alle Eingabeadapter gewährleistet, dass eine vollständige Ausgabe.

Eine vollständige Ausgabe weist somit die folgenden Anforderungen auf:

  • Eine Eingabeadapterfactory, die die IHighWaterMarkInputAdapterFactory-Schnittstelle oder die IHighWaterMarkTypedInputAdapterFactory-Schnittstelle implementiert.

  • Die Verfügbarkeit aller Ereignisse, die nach Erfassung des letzten Prüfpunkts vor dem Ausfall eingetreten sind, nach der Wiederherstellung.

  • Die Verfügbarkeit aller Ereignisse, die während des Ausfalls eingetreten sind, nach der Wiederherstellung.

  • Die ordnungsgemäße Wiedergabe dieser Ereignisse durch alle Eingabeadapter.

  • Prüfpunktausführung und die Wiederherstellung des Abfragestatus.

[OBEN]

Entfernung von Duplikaten durch Ausgabeadapter

Um die Position des Prüfpunkts im Ausgabedatenstrom zu identifizieren, stellt der Aufruf der Create-Methode der Ausgabeadapterfactory sowohl die Obergrenzenmarkierung als auch einen Offset von dieser Obergrenzenmarkierung bereit. (Die Adapterfactory muss die IHighWaterMarkOutputAdapterFactory-Schnittstelle oder die IHighWaterMarkTypedOutputAdapterFactory-Schnittstelle implementieren, um diese Informationen zu erhalten.) Dieser Offset ist erforderlich, da die Position im Ausgabedatenstrom, die dem Prüfpunkt entspricht, auf jeden Punkt im Datenstrom fallen kann.

Wenn eine Abfrage ordnungsgemäß wiedergegeben wird, entspricht der Status der internen Abfrage dem letzten Prüfpunkt, und alle Ereignisse, die nach Erfassung des letzten Prüfpunkts erzeugt wurden, werden beim Neustart erstellt. Das bedeutet, dass alle Ereignisse, die als Ausgabe nach dem letzten Prüfpunkt, aber vor dem Ausfall erzeugt wurden, während der Wiederherstellung ein zweites Mal erstellt werden. Diese Duplikate muss der Ausgabeadapter entfernen. Die Art der Entfernung hängt vom Ausgabeadapter ab. Beispielsweise können die doppelten Kopien ignoriert werden.

Die ordnungsgemäße Entfernung von Duplikaten durch alle Ausgabeadapter (nach der ordnungsgemäßen Wiedergabe durch alle Eingabeadapter) gewährleistet eine äquivalente Ausgabe.

Eine äquivalente Ausgabe weist somit neben den zuvor aufgeführten Anforderungen für eine vollständige Ausgabe folgende Anforderungen auf:

  • Eine Ausgabeadapterfactory, die die IHighWaterMarkOutputAdapterFactory-Schnittstelle oder die IHighWaterMarkTypedOutputAdapterFactory-Schnittstelle implementiert.

  • Die Verfügbarkeit aller Ereignisse, die nach Erfassung des letzten Prüfpunkts vor dem Ausfall eingetreten sind, nach der Wiederherstellung. (Diese Position im Datenstrom wird durch die Obergrenzenmarkierung und den Offset identifiziert, die bei Erstellung der Ausgabeadapterfactory bereitgestellt werden.)

  • Das ordnungsgemäße Entfernen doppelter Ereignisse durch alle Ausgabeadapter.

[OBEN]

Weitere Informationen

Weitere Informationen zur Erstellung, Überwachung und Problembehebung von stabilen StreamInsight-Anwendungen finden Sie in folgenden Themen:

Ein End-to-End-Codebeispiel einer stabilen Anwendung, die Wiedergaben und Deduplizierung verwendet, bietet das Beispiel zur Prüfpunktausführung (Checkpointing) auf der StreamInsight-Beispielseite von Codeplex.

[OBEN]