Considerazioni sull'ordine di Azure Analitica flusso eventiAzure Stream Analytics event order considerations

Ora di arrivo e tempo applicazioneArrival time and application time

In un flusso di dati temporali degli eventi, ogni evento viene assegnato un timestamp.In a temporal data stream of events, each event is assigned a time stamp. Analitica flusso Azure assegna un timestamp a ogni evento ora di arrivo oppure tempo applicazione.Azure Stream Analytics assigns a time stamp to each event by using either arrival time or application time. Il timestamp della colonna è il timestamp assegnato all'evento.The System.Timestamp column has the time stamp assigned to the event.

L'ora di arrivo viene assegnata nell'origine di input quando l'evento raggiunge l'origine.Arrival time is assigned at the input source when the event reaches the source. Ora di arrivo è possibile accedere utilizzando il EventEnqueuedTime proprietà per l'input dell'hub eventi e l'utilizzo di BlobProperties.LastModified proprietà per l'input di blob.You can access arrival time by using the EventEnqueuedTime property for event hub input and using the BlobProperties.LastModified property for blob input.

Tempo applicazione viene assegnato quando viene generato l'evento e fa parte del payload.Application time is assigned when the event is generated and it is part of the payload. Per elaborare gli eventi da tempo applicazione, utilizzare il Timestamp da clausola nella query select.To process events by application time, use the Timestamp by clause in the select query. Se il Timestamp da clausola è assente, gli eventi vengono elaborati dall'ora di arrivo.If the Timestamp by clause is absent, events are processed by arrival time.

Azure Analitica di flusso di output nell'ordine di data e ora e fornisce le impostazioni per gestire i dati in ordine.Azure Stream Analytics produces output in the time-stamp order and provides settings to deal with out-of-order data.

Gestione di più flussiHandling of multiple streams

Un processo di Azure flusso Analitica combina gli eventi da più sequenze temporali in casi simile al seguente:An Azure Stream Analytics job combines events from multiple timelines in cases like the following:

  • Generazione di output da più partizioni.Producing output from multiple partitions. Le query che non dispongono di un oggetto esplicito partizione PartitionId clausola deve combinare gli eventi da tutte le partizioni.Queries that don't have an explicit Partition by PartitionId clause must combine events from all the partitions.
  • Unione di due o più origini di input differenti.Union of two or more different input sources.
  • Join delle origini di input.Joining input sources.

In scenari in cui vengono combinate più sequenze temporali, Azure flusso Analitica produce l'output per timestamp t1 solo dopo che tutte le origini che vengono combinate sono almeno in fase di t1.In scenarios where multiple timelines are combined, Azure Stream Analytics produces output for time stamp t1 only after all the sources that are combined are at least at time t1. Ad esempio, si supponga che la query legge da una partizione di hub di eventi che dispone di due partizioni.For example, assume that the query reads from an event hub partition that has two partitions. Una delle partizioni, P1, dispone di eventi fino al momento t1.One of the partitions, P1, has events until time t1. La partizione, P2, dispone di eventi fino al momento t1 + x.The other partition, P2, has events until time t1 + x. Viene quindi generato un output fino a ora t1.Output is then produced until time t1. Ma se è presente un'esplicita partizione PartitionId clausola, entrambe le partizioni sullo stato di avanzamento in modo indipendente.But if there's an explicit Partition by PartitionId clause, both the partitions progress independently.

Per gestire l'assenza di dati in alcune partizioni viene utilizzata l'impostazione per la tolleranza di arrivo in ritardo.The setting for late arrival tolerance is used to deal with the absence of data in some partitions.

Configurazione a tolleranza di arrivo in ritardo e la tolleranza in ordineConfiguring late arrival tolerance and out-of-order tolerance

I flussi di input che non sono in ordine vengono:Input streams that are not in order are either:

  • Ordinati (e pertanto ritardato)Sorted (and therefore delayed)
  • Regolato dal sistema, in base al criterio specificato dall'utenteAdjusted by the system, according to the user-specified policy

Flusso Analitica tollerata eventi ad associazione tardi e in ordine quando esegue l'elaborazione da tempo applicazione.Stream Analytics tolerates late and out-of-order events when you're processing by application time. Le impostazioni seguenti sono disponibili nel ordine degli eventi opzione nel portale di Azure:The following settings are available in the Event ordering option in the Azure portal:

Gestione degli eventi con Analisi di flusso

Tolleranza di arrivo in ritardoLate arrival tolerance

Tolleranza di arrivo in ritardo è applicabile solo quando esegue l'elaborazione da tempo applicazione.Late arrival tolerance is applicable only when you're processing by application time. In caso contrario, l'impostazione viene ignorata.Otherwise, the setting is ignored.

La tolleranza di arrivo in ritardo è la differenza massima tra l'ora di arrivo e tempo applicazione.Late arrival tolerance is the maximum difference between arrival time and application time. Se un evento arriva entro la tolleranza di arrivo in ritardo (ad esempio, il tempo applicazione app_t < ora di arrivo arr_t -tolleranza di criteri di arrivo tardiva late_t), evento viene regolato per il valore massimo della tolleranza di arrivo in ritardo (arr_t - late_t).If an event arrives later than the late arrival tolerance (for example, application time app_t < arrival time arr_t - late arrival policy tolerance late_t), the event is adjusted to the maximum of the late arrival tolerance (arr_t - late_t). La finestra di arrivo in ritardo è il ritardo massimo tra la generazione di eventi e la ricezione dell'evento all'origine di input.The late arrival window is the maximum delay between event generation and receipt of the event at the input source.

Quando si combinano più partizioni dello stesso flusso di input o più flussi di input, la tolleranza di arrivo ad associazione tardiva è la quantità massima di tempo in cui è in attesa di nuovi dati ogni partizione.When multiple partitions from the same input stream or multiple input streams are combined, late arrival tolerance is the maximum amount of time that every partition waits for new data.

Si verifica per prima in base a tolleranza di arrivo in ritardo di regolazione.Adjustment based on late arrival tolerance happens first. Si verifica in seguito in base a tolleranza di errore in ordine di regolazione.Adjustment based on out-of-order tolerance happens next. Il timestamp della colonna è il timestamp finale assegnato all'evento.The System.Timestamp column has the final time stamp assigned to the event.

Tolleranza di errore in ordineOut-of-order tolerance

Eventi che arrivano senza ordine ma all'interno della finestra di tolleranza di errore in ordine set vengono riordinati dal timestamp.Events that arrive out of order but within the set out-of-order tolerance window are reordered by time stamp. Gli eventi arrivati entro la finestra di tolleranza di errore sono:Events that arrive later than the tolerance window are either:

  • Regolati: regolati in modo che sembrino arrivati nel momento di massimo ritardo accettabile.Adjusted: Adjusted to appear to have arrived at the latest acceptable time.
  • Eliminati: rimossi.Dropped: Discarded.

Quando il flusso Analitica Riordina eventi ricevuti all'interno della finestra di tolleranza di errore in ordine, l'output della query viene posticipata dalla finestra di tolleranza di errore in ordine.When Stream Analytics reorders events that are received within the out-of-order tolerance window, the output of the query is delayed by the out-of-order tolerance window.

EsempioExample

  • Tolleranza per arrivo in ritardo = 10 minutiLate Arrival tolerance = 10 minutes
  • Tolleranza di errore in ordine = 3 minutiOut-of-order tolerance = 3 minutes
  • Elaborazione in base al tempo applicazioneProcessing by application time
  • Eventi:Events:
    1. Tempo applicazione = 00:00:00, ora di arrivo = 10:00:01, timestamp = 00:00:01, rettificare perché (ora di arrivo - tempo applicazione) è più della tolleranza di arrivo in ritardo.Application Time = 00:00:00, Arrival Time = 00:10:01, System.Timestamp = 00:00:01, adjusted because (Arrival Time - Application Time) is more than the late arrival tolerance.
    2. Tempo applicazione = 00:00:01, ora di arrivo = 10:00:01, timestamp = 00:00:01, non modificato perché l'applicazione ora è all'interno della finestra di arrivo in ritardo.Application Time = 00:00:01, Arrival Time = 00:10:01, System.Timestamp = 00:00:01, not adjusted because application time is within the late arrival window.
    3. Tempo applicazione = 00:10:00, ora di arrivo = 00:10:02 timestamp = 00:10:00, non modificato perché l'applicazione ora è all'interno della finestra di arrivo in ritardo.Application Time = 00:10:00, Arrival Time = 00:10:02, System.Timestamp = 00:10:00, not adjusted because application time is within the late arrival window.
    4. Tempo applicazione = 00:09:00, ora di arrivo = 10:00:03, timestamp = 00:09:00, accettato con il timestamp originale perché tempo applicazione è all'interno dell'ordine tolleranza di errore.Application Time = 00:09:00, Arrival Time = 00:10:03, System.Timestamp = 00:09:00, accepted with the original time stamp because application time is within the out-of-order tolerance.
    5. Tempo applicazione = 06:00:00, ora di arrivo = 04:00:10, timestamp = 00:07:00, regolato perché tempo applicazione è precedente rispetto alla tolleranza in ordine.Application Time = 00:06:00, Arrival Time = 00:10:04, System.Timestamp = 00:07:00, adjusted because application time is older than the out-of-order tolerance.

Considerazioni pratichePractical considerations

Come accennato in precedenza, tolleranza di arrivo in ritardo è la differenza massima tra tempo applicazione e l'ora di arrivo.As mentioned earlier, late arrival tolerance is the maximum difference between application time and arrival time. Quando esegue l'elaborazione da tempo applicazione, vengono modificati gli eventi entro la tolleranza configurata di arrivo in ritardo prima che venga applicata l'impostazione della tolleranza di errore in ordine.When you're processing by application time, events that are later than the configured late arrival tolerance are adjusted before the out-of-order tolerance setting is applied. In tal caso, non in ordine di validità è il requisito minimo di tolleranza di arrivo in ritardo e tolleranza di errore in ordine.So, effective out of order is the minimum of late arrival tolerance and out-of-order tolerance.

I motivi per gli eventi in ordine all'interno di un flusso includono:Reasons for out-of-order events within a stream include:

  • Dello sfasamento di orario tra i mittenti.Clock skew among the senders.
  • Variabile latenza tra il mittente e l'origine evento di input.Variable latency between the sender and the input event source.

I motivi per arrivo in ritardo includono:Reasons for late arrival include:

  • Mittenti di invio in batch e l'invio di eventi per un intervallo in un secondo momento, dopo l'intervallo.Senders batching and sending the events for an interval later, after the interval.
  • Latenza tra l'invio dell'evento dal mittente e la ricezione dell'evento in corrispondenza l'origine di input.Latency between sending the event by sender and receiving the event at the input source.

Quando si configurano tolleranza arrivo in ritardo e la tolleranza in ordine per un processo specifico, prendere in considerazione i fattori precedenti, requisiti di latenza e correttezza.When you're configuring late arrival tolerance and out-of-order tolerance for a specific job, consider correctness, latency requirements, and the preceding factors.

Di seguito sono riportati alcuni esempi.Following are a few examples.

Esempio 1Example 1

La query ha un partizione PartitionId clausola.The query has a Partition by PartitionId clause. All'interno di una singola partizione, gli eventi vengono inviati tramite i metodi di invio sincrona.Within a single partition, events are sent via synchronous send methods. I metodi di invio sincrono si bloccano finché non vengono inviati gli eventi.Synchronous send methods block until the events are sent.

In questo caso, non in ordine è zero poiché gli eventi vengono inviati in base all'ordine esplicito conferma prima dell'invio dell'evento successivo.In this case, out of order is zero because events are sent in order with explicit confirmation before the next event is sent. All'arrivo in ritardo è il ritardo massimo tra la generazione dell'evento e l'invio dell'evento, nonché la latenza massima tra il mittente e l'origine di input.Late arrival is the maximum delay between generating the event and sending the event, plus the maximum latency between the sender and the input source.

Esempio 2Example 2

La query ha un partizione PartitionId clausola.The query has a Partition by PartitionId clause. All'interno di una singola partizione, gli eventi vengono inviati tramite i metodi di invio asincrono.Within a single partition, events are sent via asynchronous send methods. Metodi di invio asincrono possono avviare più inviati allo stesso tempo, che possono causare gli eventi in ordine.Asynchronous send methods can initiate multiple sends at the same time, which can cause out-of-order events.

In questo caso, ad associazione tardiva e non in ordine di arrivo costituiscono almeno il ritardo massimo tra la generazione dell'evento e l'invio dell'evento, nonché la latenza massima tra il mittente e l'origine di input.In this case, both out of order and late arrival are at least the maximum delay between generating the event and sending the event, plus the maximum latency between the sender and the input source.

Esempio 3Example 3

La query non dispone di un partizione PartitionId clausola, e sono presenti almeno due partizioni.The query does not have a Partition by PartitionId clause, and there are at least two partitions.

Configurazione è lo stesso esempio 2.Configuration is the same as example 2. Tuttavia, assenza di dati in una delle partizioni può ritardare l'output da una finestra di tolleranza arrivo in ritardo aggiuntiva.However, absence of data in one of the partitions can delay the output by an additional late arrival tolerance window.

La gestione di producer di eventi con le sequenze temporali diversiHandling event producers with differing timelines

Un flusso singolo evento di input contiene spesso gli eventi provenienti da più producer di eventi, ad esempio i singoli dispositivi.A single input event stream often contains events that originate from multiple event producers, such as individual devices. Questi eventi possono arrivare senza ordine dovuto ai motivi descritti in precedenza.These events might arrive out of order due to the reasons discussed earlier. In questi scenari, anche se il disordine tra producer di eventi potrebbe essere di grandi dimensioni, il disordine in eventi da un produttore singolo è piccolo (o addirittura inesistenti).In these scenarios, although the disorder across event producers might be large, the disorder within the events from a single producer is small (or even nonexistent).

Azure Analitica di flusso fornisce meccanismi generale per la gestione di eventi in ordine.Azure Stream Analytics provides general mechanisms for dealing with out-of-order events. Tali risultati meccanismi di ritardi di elaborazione (in attesa per gli eventi straggling raggiungere il sistema), eliminati o modificati gli eventi o entrambi.Such mechanisms result in processing delays (while waiting for the straggling events to reach the system), dropped or adjusted events, or both.

Ancora in molti scenari, la query desiderata è l'elaborazione degli eventi dal producer di eventi diversi in modo indipendente.Yet in many scenarios, the desired query is processing events from different event producers independently. Ad esempio, potrebbe essere l'aggregazione degli eventi per ogni finestra, per ogni dispositivo.For instance, it might be aggregating events per window, per device. In questi casi, non è necessario ritardare l'output che corrisponde al produttore di un evento durante l'attesa di altri produttori di eventi per l'intercettazione.In these cases, there's no need to delay the output that corresponds to one event producer while waiting for the other event producers to catch up. In altre parole, non è necessario affrontare di sfasamento dell'ora tra i produttori.In other words, there's no need to deal with the time skew between producers. È possibile ignorarla.You can ignore it.

Naturalmente, ciò significa che gli stessi eventi di output non sono ordinati per quanto riguarda i relativi timestamp.Of course, this means that the output events themselves are out of order with respect to their timestamps. Il consumer a valle deve essere in grado di gestire tale comportamento.The downstream consumer must be able to deal with such behavior. Tuttavia, ogni evento nell'output sia corretto.But every event in the output is correct.

Azure flusso Analitica implementa questa funzionalità utilizzando il TIMESTAMP BY OVER clausola.Azure Stream Analytics implements this functionality by using the TIMESTAMP BY OVER clause.

SummarySummary

  • Configurare tolleranza arrivo in ritardo e la finestra in ordine in base a requisiti di latenza e correttezza.Configure late arrival tolerance and the out-of-order window based on correctness and latency requirements. Considerare inoltre la modalità di invio di eventi.Also consider how the events are sent.
  • È consigliabile che la tolleranza in ordine è inferiore a tolleranza di arrivo in ritardo.We recommend that out-of-order tolerance is smaller than late arrival tolerance.
  • È inoltre più sequenze temporali, mancanza di dati in una delle origini o le partizioni può ritardare l'output da una finestra di tolleranza arrivo in ritardo aggiuntiva.When you're combining multiple timelines, lack of data in one of the sources or partitions can delay the output by an additional late arrival tolerance window.

Ottenere aiutoGet help

Per ulteriori informazioni, provare il forum di Azure flusso Analitica.For additional assistance, try the Azure Stream Analytics forum.

Passaggi successiviNext steps