Политики неравномерного распределения времени (Azure Stream Analytics)

В Stream Analytics все события потока данных имеют связанную с ними метку времени . Пользователи могут использовать ключевое слово TIMESTAMP BY, чтобы выбрать один из двух разных периодов:

  • Время приложения, т. е. время создания событий (помеченное приложением или устройством, создающим события). При использовании времени приложения можно либо обрабатывать все события с помощью глобального временная шкала, либо анализировать каждое устройство или секцию, используя собственные временная шкала с помощью подпотоков;
  • Время прибытия, время достижения события в облако (например, время поступления в Центр Интернета вещей или концентратор событий).

В дополнение к выбору метки времени пользователям может потребоваться определить политику позднего прибытия и не в порядке из-за следующих проблем:

  • Производители событий имеют неравномерное распределение часов. Это распространено, когда производители из разных машин, поэтому у них разные часы.
  • Из-за задержки в сети события, поступающие из одного и того же времени, могут поступать в концентратор событий или Центр Интернета вещей в порядке, отличном от времени их возникновения.
  • Неравномерное распределение часов между секциями. При использовании несекционированных запросов события из всех секций объединяются по метке времени по выбору пользователя. Неравномерное распределение часов между секциями может привести к задержке обработки, так как слиянию необходимо дождаться самой медленной секции.

Входные потоки, которые находятся не в порядке, могут быть следующими:

  • Отсортировано (и, следовательно , отложено).
  • корректировка системой с учетом пользовательской политики.

При обработке по времени приложения Stream Analytics допускает неупорядоченные события и события, поступившие с задержкой.

Политика не в порядке

При потоковой аналитике очень важно упорядочение событий по времени. Однако из-за трех проблем, упомянутых выше, часто они получаются не в порядке, что может повлиять на результаты наших запросов. Политика неупорядочения позволяет изменять порядок событий по метке времени, когда они поступают в пределах определенного интервала допустимости. События, поступающие позже допустимого значения, удаляются или корректируются в зависимости от выбранного параметра.

  • Корректировка предполагает изменение значения времени к крайнему допустимому.
  • Удаление предполагает удаление.

Этот параметр можно настроить в портал Azure (на вкладке "Порядок событий" задания). Дополнительные сведения см. на странице рекомендаций по заказу событий.

При задании политики неупорядоченности больше 0, Stream Analytics буферизует события до этого окна и переупорядочивает их с помощью определенной пользователем метки времени перед применением темпорального преобразования. Как правило, рекомендуется начинать с 3-секундного окна, а затем настраивать значение, чтобы уменьшить количество событий, которые корректируются по времени. Обратите внимание, что из-за буферизации побочный эффект заключается в том, что выходные данные задерживаются на тот же промежуток времени. В результате вам потребуется настроить значение, чтобы уменьшить количество событий, не хранющихся в порядке, и сохранить низкую задержку.

Допустимый интервал поступления с опозданием

Окно допустимости поступления с задержкой используется для учета задержки в событиях, достигающих источника входных данных по различным причинам, описанным выше. Если коротко, то интервал поступления с задержкой — это максимальная задержка между созданием события и его получением в источнике входных данных. Сначала выполняется корректировка на основе допустимого интервала поступления с задержкой, а затем корректируются события, полученные в неправильном порядке. Столбец System.Timestamp() будет иметь последнюю метку времени, назначенную событию.

Эта настройка применяется только при обработке по времени приложения. В ином случае она игнорируется. Его также можно задать в портал Azure (на вкладке "Порядок событий" задания). Дополнительные сведения см. на странице рекомендаций по заказу событий.

Если событие опоздает, его метка времени корректируется на текущее время постановки в очередь в источнике входных данных за вычетом интервала задержки поступления (или удаляется в зависимости от выбранного действия). Если одновременно используется несколько секций из одного входного потока или нескольких входных потоков, то допустимый интервал поступления с задержкой является максимальным временем, которое каждая секция ожидает поступления новых данных.

Отклонение задержки поступления и разреженные события

Политика позднего поступления позволяет Stream Analytics перемещать время вперед и создавать выходные данные в более своевременном режиме при отсутствии входных событий. Это очень полезно, если входные события разрежены (или вообще не получены в некоторых разделах концентратора событий).

Например, входные события создаются каждую минуту для запроса select*. Без использования этой политики Stream Analytics не сможет создавать выходные результаты, пока события не поступят во все секции концентратора событий (для перемещения времени вперед). Это может означать 16 минут, если концентратор событий содержит 16 секций и каждое событие доставляется в другую секцию. При использовании 5-секундной политики по умолчанию часы перемещаются вперед через 5 секунд после первого события, поэтому выходное событие создается через 5 секунд после первого события.

См. также:

Управление временем (Azure Stream Analytics)
System.Timestamp() (Stream Analytics)
TIMESTAMP BY (Azure Stream Analytics)
Вопросы порядка событий