Zasady niesymetryczności czasu (Azure Stream Analytics)

W usłudze Stream Analytics wszystkie zdarzenia strumienia danych mają skojarzony znacznik czasu . Użytkownicy mogą użyć słowa kluczowego TIMESTAMP BY do wyboru między jednym z tych dwóch różnych razy:

  • Czas aplikacji, czyli czas generowania zdarzeń (oznaczony przez aplikację/urządzenie generujące zdarzenia). W przypadku korzystania z czasu aplikacji można przetwarzać wszystkie zdarzenia przy użyciu globalnej osi czasu lub analizować każde urządzenie/partycję przy użyciu własnej osi czasu przy użyciu podstreams;
  • Godzina przybycia, czas dotarcia zdarzenia do chmury (np. czas przyjazdu w IoT Hub lub centrum zdarzeń).

Oprócz wyboru znacznika czasu użytkownicy mogą wymagać zdefiniowania zasad Opóźnione przybycie i Poza zamówieniem z powodu następujących problemów:

  • Producenci wydarzeń mają niesymetryczności zegara. Jest to powszechne, gdy producenci są z różnych maszyn, więc mają różne zegary.
  • Ze względu na opóźnienie sieci zdarzenia pochodzące z tego samego zegara mogą docierać do centrum zdarzeń lub IoT Hub w innej kolejności niż w przypadku ich utworzenia
  • Zegar niesymetryczny między partycjami. W przypadku korzystania z zapytań niepartych na partycje zdarzenia ze wszystkich partycji są scalane według sygnatury czasowej wybranego użytkownika. Niesymetryczność zegara między partycjami może spowodować opóźnienie przetwarzania, ponieważ fuzja musi czekać na najwolniejszą partycję.

Strumienie wejściowe, które nie są w porządku, mogą być:

  • Posortowane (i dlatego opóźnione).
  • Dostosowane przez system zgodnie z zasadami określonymi przez użytkownika.

Usługa Stream Analytics toleruje zdarzenia opóźnione i poza kolejnością podczas przetwarzania według czasu aplikacji.

Zasady poza kolejnością

Posiadanie zdarzeń uporządkowanych według czasu jest bardzo ważne w analizie przesyłania strumieniowego. Jednak ze względu na 3 wymienione powyżej problemy często zdarza się, że są one odbierane poza kolejnością, co może mieć wpływ na wyniki naszych zapytań. Zasady poza kolejnością umożliwiają zmienianie kolejności zdarzeń według sygnatury czasowej po ich nadejściu w zdefiniowanym oknie tolerancji. Zdarzenia, które docierają później niż tolerancja, są porzucane lub dostosowywane w zależności od wybranego ustawienia.

  • Dostosowane: Dostosowane, aby wydawało się, że przybył w ostatnim akceptowalnym czasie.
  • Porzucone: odrzucone.

To ustawienie można dostosować w Azure Portal (na karcie "Kolejność zdarzeń" zadania). Aby uzyskać więcej informacji, zapoznaj się ze stroną zagadnień dotyczących kolejności zdarzeń.

W przypadku ustawiania zasad poza kolejnością większej niż 0 usługa Stream Analytics będzie buforować zdarzenia do tego okna i zmienić ich kolejność przy użyciu znacznika czasu zdefiniowanego przez użytkownika przed zastosowaniem przekształcenia czasowego. Zazwyczaj rozpoczęcie od 3 drugiego okna jest dobrym najlepszym rozwiązaniem, a następnie dostrojenie wartości w celu zmniejszenia liczby zdarzeń, które są dostosowywane. Należy pamiętać, że ze względu na buforowanie efekt uboczny jest wynikiem opóźnionym o ten sam czas. W związku z tym należy dostosować wartość, aby zmniejszyć liczbę zdarzeń poza kolejnością i zachować małe opóźnienie.

Tolerancja spóźnionych przylotów

Okno tolerancji opóźnionego przybycia służy do uwzględnienia opóźnienia w zdarzeniach docierających do źródła wejściowego z różnych powodów opisanych powyżej. Krótko, późne okno przybycia jest maksymalnym opóźnieniem między generowaniem zdarzeń a odbieraniem zdarzenia w źródle wejściowym. Korekta oparta na tolerancji opóźnionego przybycia jest wykonywana w pierwszej kolejności, a kolejność jest wykonywana poza kolejnością. Kolumna System.Timestamp() będzie mieć ostatni znacznik czasu przypisany do zdarzenia.

To ustawienie ma zastosowanie tylko w przypadku przetwarzania według czasu aplikacji, w przeciwnym razie jest ignorowane. Można go również ustawić w Azure Portal (na karcie "Kolejność zdarzeń" zadania). Aby uzyskać więcej informacji, zapoznaj się ze stroną zagadnień dotyczących kolejności zdarzeń.

Gdy zdarzenie jest opóźnione, znacznik czasu jest dostosowywany do bieżącego czasu kolejkowania w źródle wejściowym pomniejszonego o okno tolerancji opóźnionego przybycia (lub porzucony, w zależności od wybranej akcji). Jeśli wiele partycji z tego samego strumienia wejściowego lub wielu strumieni wejściowych jest połączonych ze sobą, tolerancja późnego przybycia jest maksymalnym czasem oczekiwania na nowe dane przez partycję.

Tolerancja opóźnionych przylotów i zdarzeń rozrzednych

Zasady opóźnionego przylotu umożliwiają usłudze Stream Analytics przenoszenie czasu do przodu i generowanie danych wyjściowych w sposób czasowy w przypadku braku zdarzeń wejściowych. Jest to bardzo przydatne, gdy zdarzenia wejściowe są rozrzedbione (lub w ogóle nie są odbierane w niektórych partycjach centrum zdarzeń).

Na przykład zdarzenia wejściowe są generowane co minutę dla zapytania select*. Bez używania tych zasad usługa Stream Analytics nie może wygenerować wyników wyjściowych, dopóki zdarzenia nie dotrą do wszystkich partycji centrum zdarzeń (aby przesunąć czas do przodu). Może to oznaczać 16 minut, jeśli centrum zdarzeń ma 16 partycji i że każde zdarzenie jest dostarczane do innej partycji. W przypadku domyślnych 5-sekundowych zasad zegar jest przesuwany do przodu 5 sekund po pierwszym zdarzeniu, więc zdarzenie wyjściowe jest generowane 5 sekund po pierwszym zdarzeniu.

Zobacz też

Zarządzanie czasem (Azure Stream Analytics)
System.Timestamp() (Stream Analytics)
TIMESTAMP BY (Azure Stream Analytics)
Zagadnienia dotyczące kolejności zdarzeń