Partager via


Stratégies d’asymétrie temporelle

✅ Azure Stream Analytics

Tous les événements de flux de données ont un horodatage associé. Les utilisateurs peuvent utiliser le mot clé TIMESTAMP BY pour choisir entre l’une des deux fois suivantes :

  • Heure de l’application, c’est-à-dire l’heure à laquelle les événements sont produits (comme marqués par l’application/l’appareil qui génère les événements). Lorsque vous utilisez le temps de l’application, vous pouvez traiter tous les événements à l’aide d’une chronologie globale, ou analyser chaque appareil/partition à l’aide de sa propre chronologie à l’aide de sous-flux ;
  • Heure d’arrivée, heure d’arrivée de l’événement atteint le cloud (par exemple, heure d’arrivée dans IoT Hub ou Event Hub).

Outre le choix de l’horodatage, les utilisateurs peuvent avoir besoin de définir la stratégie Arrivée tardive et Hors commande en raison des problèmes suivants :

  • Les producteurs des événements ont des asymétries d’horloge. Cela est courant lorsque les producteurs proviennent de machines différentes, de sorte qu’ils ont des horloges différentes.
  • En raison de la latence du réseau, les événements provenant de la même horloge peuvent arriver à Event Hub ou IoT Hub dans un ordre différent de celui de leur origine.
  • Décalages d’horloge entre les partitions. Lorsque vous utilisez des requêtes non partitionnés, les événements de toutes les partitions sont fusionnés par l’horodatage du choix de l’utilisateur. Les asymétries d’horloge entre les partitions peuvent entraîner un retard de traitement, car la fusion doit attendre la partition la plus lente.

Les flux d’entrée qui ne sont pas dans l’ordre peuvent être :

  • Trié (et donc retardé).
  • Ajusté par le système, en fonction de la stratégie spécifiée par l’utilisateur.

Stream Analytics tolère les événements en retard et hors commande lors du traitement par heure de l’application.

Stratégie hors commande

Le fait d’avoir des événements ordonnés par heure est très important dans l’analytique de streaming. Toutefois, en raison des 3 problèmes mentionnés ci-dessus, il est souvent possible qu’ils soient reçus hors ordre, ce qui peut affecter les résultats de nos requêtes. La stratégie d’absence de commande permet de réorganiser les événements par horodatage lorsqu’ils arrivent dans la fenêtre de tolérance définie. Les événements qui arrivent plus tard que la tolérance sont supprimés ou ajustés, selon le paramètre que vous choisissez.

  • Ajusté : ajusté pour apparaître à l’heure la plus récente acceptable.
  • Dropped: Discarded.

Ce paramètre peut être ajusté dans le portail Azure (sous l’onglet « Ordre des événements » d’un travail). Pour plus d’informations, reportez-vous à la page considérations relatives à l’ordre des événements.

Lors de la définition d’une stratégie hors ordre supérieure à 0, Stream Analytics met en mémoire tampon les événements jusqu’à cette fenêtre et les réorganise à l’aide de l’horodatage défini par l’utilisateur avant d’appliquer la transformation temporelle. En règle générale, commencer par une fenêtre de 3 secondes est une bonne pratique, puis paramétrer la valeur pour réduire le nombre d’événements ajustés. Notez qu’en raison de la mise en mémoire tampon, l’effet secondaire est la sortie retardée par la même durée. Par conséquent, vous devez régler la valeur pour réduire le nombre d’événements hors commande et réduire la latence.

Tolérance d’arrivée tardive

La fenêtre de tolérance d’arrivée tardive est utilisée pour tenir compte des retards dans les événements atteignant la source d’entrée en raison de diverses raisons décrites ci-dessus. Brièvement, la fenêtre d’arrivée tardive est le délai maximal entre la génération d’événements et la réception de l’événement à la source d’entrée. L’ajustement basé sur la tolérance d’arrivée tardive est effectué en premier et hors ordre est effectué ensuite. La colonne System.Timestamp() aura l’horodatage final affecté à l’événement.

Ce paramètre s’applique uniquement lors du traitement par heure de l’application, sinon il est ignoré. Il peut également être défini dans le portail Azure (sous l’onglet « Ordre des événements » d’un travail). Pour plus d’informations, reportez-vous à la page considérations relatives à l’ordre des événements.

Lorsqu’un événement est en retard, l’horodatage est ajusté au moment de la file d’attente actuelle à la source d’entrée moins la fenêtre de tolérance d’arrivée tardive (ou supprimée, selon l’action choisie). Lorsque plusieurs partitions du même flux d’entrée ou de plusieurs flux d’entrée sont combinées, la tolérance d’arrivée tardive est la durée maximale pendant laquelle chaque partition attend de nouvelles données.

Tolérance d’arrivée tardive et événements partiellement alloués

La stratégie d’arrivée tardive permet à Stream Analytics d’avancer le temps et de générer la sortie de manière plus chronologique en l’absence d’événements d’entrée. Cela est très utile lorsque les événements d’entrée sont partiellement alloués (ou ne sont pas reçus du tout dans certaines des partitions Event Hub).

Par exemple, les événements d’entrée sont générés une fois par minute pour une requête select*. Sans utiliser cette stratégie, Stream Analytics ne peut pas générer de résultats de sortie tant que les événements arrivent à toutes les partitions Event Hub (pour avancer le temps). Cela peut signifier 16 minutes si event Hub a 16 partitions et que chaque événement est remis à une partition différente. Avec la stratégie par défaut de 5 secondes, l’horloge est déplacée vers l’avant 5 secondes après le premier événement, de sorte que l’événement de sortie est généré 5 secondes après le premier événement.

See Also

Time Management
System.Timestamp() (Stream Analytics)
TIMESTAMP BY
Considérations relatives à l’ordre des événements