Garanties de remise d’événements (Azure Stream Analytics)

Le langage de requête Azure Stream Analytics étend la syntaxe SQL pour permettre des calculs complexes sur des flux d’événements. Avec Stream Analytics, certains concepts liés à la remise d’événements méritent d’être abordés :

  • Traitement d’une seule fois
  • Une seule livraison
  • Enregistrements dupliqués

En plus de ces concepts détaillés ci-dessous, il est important d’envisager l’option de début d’un travail pour vous assurer qu’aucune perte de données ne peut se produire.

Traitement en une seule fois

La garantie de traitement en une seule fois signifie qu’en fonction d’un ensemble d’entrées, le système retourne toujours les mêmes résultats. Cela est très important pour la répétabilité et s’applique même en cas de redémarrage du travail ou sur plusieurs travaux exécutés en parallèle sur la même entrée. Azure Stream Analytics garantit exactement une fois le traitement.

Livraison exactement une fois

La garantie de livraison exactement une fois signifie que toutes les sorties du traitement exactement une fois sont remises au récepteur de sortie une seule fois, de sorte qu’il n’y a pas de sortie en double. Cela nécessite d’obtenir des fonctionnalités transactionnelles sur l’adaptateur de sortie.

Azure Stream Analytics garantit une remise au moins une fois aux récepteurs de sortie, ce qui garantit que tous les résultats sont générés, mais que des résultats en double peuvent se produire. Toutefois, la livraison d’une seule fois peut être obtenue avec plusieurs sorties telles qu’Azure Cosmos DB ou Azure SQL.

Enregistrements dupliqués

En raison de la garantie de remise au moins une fois, lorsqu’un travail Stream Analytics est en cours d’exécution, des enregistrements en double peuvent parfois être remarqués dans les données de sortie. Ces enregistrements en double sont attendus, car les adaptateurs de sortie Azure Stream Analytics n’écrivent pas les événements de sortie de manière transactionnelle. Ce scénario d’enregistrement en double peut se produire si l’une des conditions suivantes se produit :

  • Le instance Azure est mis à niveau pendant l’exécution du travail
  • Le travail Stream Analytics est mis à niveau ou un problème se produit avec la connectivité ou la fiabilité de la sortie du travail
  • Le instance Azure qui exécute le travail présente une panne
  • Le travail Stream Analytics est démarré avec l’option à la date du dernier arrêt

Le consommateur en aval des événements de sortie doit déduplier les événements à l’aide de l’identité logique des événements. Par exemple, si vous agrégez des événements par groupes dans une fenêtre bascule, l’identité logique de l’événement est les groupes et l’heure de fin de la fenêtre de basculement. Si vous exécutez une requête de passage, vous devrez peut-être porter un ID unique sur l’événement afin de déduplier.

Sortie prenant en charge la livraison en une seule fois avec Azure Stream Analytics

Azure Cosmos DB

À l’aide d’Azure Cosmos DB, Azure Stream Analytics garantit une livraison en une seule fois. Étant donné qu’Azure Stream Analytics utilise upsert, aucune action n’est nécessaire pour l’utilisateur. Consultez plus d’informations sur la sortie d’Azure Stream Analytics dans Azure Cosmos DB.

SQL

Lors de l’utilisation de la sortie SQL, les utilisateurs peuvent obtenir une remise en une seule fois si les conditions suivantes sont remplies :

  • tous les événements de streaming de sortie ont une clé naturelle, c’est-à-dire sont identifiables de manière unique par un champ ou une combinaison de champs.
  • la table SQL de sortie a une contrainte unique (ou clé primaire) créée à l’aide de la clé naturelle des événements de sortie.

Cela est suffisant pour éviter les doublons, car la sortie SQL respecte toutes les contraintes placées sur la table en ignorant tous les événements qui provoquent une violation de contrainte unique.

table Azure

Toutes les entités d’une table de stockage Azure sont identifiées de manière unique par la concaténation des RowKey champs et PartitionKey . Azure Stream Analytics upserts entités, de sorte que la valeur d’une entité de table sera l’événement de sortie le plus récent avec la combinaison correspondante RowKey/PartitionKey . Par conséquent, pour obtenir une remise en une seule fois, assurez-vous que chaque événement de sortie a une combinaison unique RowKey/PartitionKey . Si cette opération est effectuée, les événements en double remplacent les versions antérieures. (Le champ défini par Timestamp le système, qui est l’heure de la dernière modification de l’entité, sera toujours modifié dans ce cas.)

Voir aussi

Gestion du temps