Time Skew Policies (Azure Stream Analytics)
In Stream Analytics ist allen Datenstromereignissen ein Zeitstempel zugeordnet. Benutzer können die TIMESTAMP BY-Schlüsselwort (keyword) verwenden, um zwischen einer der beiden verschiedenen Zeiten zu wählen:
- Anwendungszeit, d. s. die Zeit, zu der die Ereignisse erzeugt werden (wie durch die Anwendung/das Gerät, das die Ereignisse generiert), gekennzeichnet ist. Wenn Sie die Anwendungszeit verwenden, können Sie entweder alle Ereignisse mit einem globalen Zeitleiste verarbeiten oder jedes Gerät/jede Partition mithilfe eines eigenen Zeitleiste mithilfe von Substreams analysieren.
- Ankunftszeit, der Zeitpunkt, zu dem das Ereignis die Cloud erreicht hat (z. B. Ankunftszeit in IoT Hub oder Event Hub).
Zusätzlich zur Wahl des Zeitstempels müssen Benutzer möglicherweise aufgrund der folgenden Probleme eine Richtlinie für verspätete Ankunft und Nicht-Reihenfolge definieren:
- Die Hersteller der Ereignisse weisen Uhrenschiefe auf. Dies ist üblich, wenn Hersteller von unterschiedlichen Maschinen stammen, sodass sie unterschiedliche Uhren haben.
- Aufgrund der Netzwerklatenz können Ereignisse, die von derselben Uhr stammen, bei Event Hub oder IoT Hub in einer anderen Reihenfolge als beim Zeitpunkt ihrer Entstehung eintreffen.
- Uhrschiefe zwischen Partitionen. Bei verwendung von nicht partitionierten Abfragen werden Ereignisse aus allen Partitionen nach dem vom Benutzer gewählten Zeitstempel zusammengeführt. Taktverschiebungen zwischen den Partitionen können zu einer Verzögerung der Verarbeitung führen, da die Fusion auf die langsamste Partition warten muss.
Eingabedatenströme, die nicht in der Reihenfolge sind, können beide sein:
- Sortiert (und daher verzögert).
- Sie wurden vom System gemäß einer benutzerdefinierten Richtlinie angepasst.
Stream Analytics toleriert bei der Verarbeitung auf der Grundlage der Anwendungszeit verzögerte Ereignisse und Ereignisse außerhalb der Reihenfolge.
Richtlinie "Out of Order"
Ereignisse nach Zeit geordnet zu haben, ist in der Streaminganalyse sehr wichtig. Aufgrund der oben genannten drei Probleme ist es jedoch häufig der Fall, dass sie ungeordnet empfangen werden, was sich auf die Ergebnisse unserer Abfragen auswirken kann. Die Out of Order-Richtlinie ermöglicht das Neuanordnen von Ereignissen nach Zeitstempel, wenn sie innerhalb des definierten Toleranzfensters eintreffen. Ereignisse, die später als die Toleranz eintreffen, werden je nach ausgewählter Einstellung entweder gelöscht oder angepasst.
- Angepasst: Ereignisse werden so angepasst, als ob sie zum spätmöglichsten zulässigen Zeitpunkt angekommen wären.
- Verworfen: Ereignisse werden verworfen.
Diese Einstellung kann im Azure-Portal (auf der Registerkarte "Ereignisreihenfolge" eines Auftrags) angepasst werden. Weitere Informationen finden Sie auf der Seite Überlegungen zur Ereignisreihenfolge.
Beim Festlegen einer Richtlinie mit größerer Reihenfolge als 0 puffert Stream Analytics Ereignisse bis zu diesem Fenster und sortiert sie mithilfe des benutzerdefinierten Zeitstempels neu an, bevor die temporale Transformation angewendet wird. Im Allgemeinen ist es eine bewährte Methode, zuerst mit einem 3-Sekunden-Fenster zu beginnen und dann den Wert zu optimieren, um die Anzahl der Ereignisse zu verringern, die zeitbereinigt werden. Beachten Sie, dass aufgrund der Pufferung der Nebeneffekt ist, dass die Ausgabe um die gleiche Zeit verzögert wird. Daher müssen Sie den Wert optimieren, um die Anzahl von Ereignissen in der fehlerhaften Reihenfolge zu verringern und die Latenz niedrig zu halten.
Toleranz bei verspäteter Ankunft
Das Toleranzfenster für verspätete Ankunft wird verwendet, um Verzögerungen bei Ereignissen zu berücksichtigen, die die Eingabequelle aus verschiedenen oben beschriebenen Gründen erreichen. Kurz gesagt: Das Fenster für die Eingangsverzögerung ist die maximale Verzögerung zwischen der Ereigniserstellung und dem Eingang des Ereignisses an der Eingabequelle. Zuerst erfolgt die Anpassung auf der Grundlage der Toleranz für die Eingangsverzögerung, anschließend die Anpassung auf der Grundlage der falschen Reihenfolge. Der Spalte System.Timestamp() wird der letzte Zeitstempel dem Ereignis zugewiesen.
Diese Einstellung gilt nur für die Verarbeitung auf der Grundlage der Anwendungszeit, andernfalls wird sie ignoriert. Sie kann auch im Azure-Portal (auf der Registerkarte "Ereignisreihenfolge" eines Auftrags) festgelegt werden. Weitere Informationen finden Sie auf der Seite Überlegungen zur Ereignisreihenfolge.
Wenn ein Ereignis zu spät ist, wird der Zeitstempel an die aktuelle Queuezeit an der Eingabequelle abzüglich des Toleranzfensters für späte Ankunft angepasst (oder wird je nach ausgewählter Aktion gelöscht). Wenn mehrere Teile des gleichen Eingabedatenstroms oder mehrere Eingabedatenströme kombiniert werden, ist die Toleranz für die Eingangsverzögerung der maximale Zeitraum, den jeder Teil auf neue Daten wartet.
Toleranz bei verspäteter Ankunft und Sparseereignisse
Die Richtlinie für späte Ankunft ermöglicht es Stream Analytics, die Zeit nach vorne zu verschieben und bei fehlenden Eingabeereignissen eine Ausgabe auf zeitigere Weise zu generieren. Dies ist sehr nützlich, wenn Eingabeereignisse spärlich sind (oder in einigen Event Hub-Partitionen überhaupt nicht empfangen werden).
Beispielsweise werden Eingabeereignisse einmal pro Minute für eine select*-Abfrage generiert. Ohne diese Richtlinie kann Stream Analytics keine Ausgabeergebnisse generieren, bis Ereignisse auf allen Event Hub-Partitionen eintreffen (um die Zeit nach vorne zu verschieben). Dies kann 16 Minuten bedeuten, wenn der Event Hub über 16 Partitionen verfügt und dass jedes Ereignis an eine andere Partition übermittelt wird. Bei der Standardrichtlinie von 5 Sekunden wird die Uhr 5 Sekunden nach dem ersten Ereignis vorwärts verschoben, sodass das Ausgabeereignis 5 Sekunden nach dem ersten Ereignis generiert wird.
Weitere Informationen
Zeitverwaltung (Azure Stream Analytics)
System.Timestamp() (Stream Analytics)
TIMESTAMP BY (Azure Stream Analytics)
Ereignisreihenfolgeüberlegung