Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
✅ Azure Stream Analytics
Язык запросов Azure Stream Analytics расширяет синтаксис SQL для включения сложных вычислений через потоки событий. При использовании Stream Analytics существуют некоторые понятия, связанные с доставкой событий, которые стоит обсудить:
- Однократная обработка
- Точно один раз доставка
- Duplicate records
В дополнение к этим понятиям, описанным ниже, важно рассмотреть вариант запуска задания , чтобы убедиться, что потеря данных не может произойти.
Exactly-once processing
Точно один раз гарантия обработки означает, что при указании набора входных данных система всегда возвращает одинаковые результаты. Это очень важно для повторяемости, и применяется даже в случае перезапуска задания или нескольких заданий, выполняемых параллельно с одинаковыми входными данными. Azure Stream Analytics гарантирует точное время обработки.
Exactly-once delivery
Точно один раз гарантия доставки означает, что все выходные данные от обработки точно один раз доставляются в приемник выходных данных точно один раз, поэтому дубликаты выходных данных отсутствуют. Для этого требуются возможности транзакций для выходного адаптера.
Azure Stream Analytics гарантирует по крайней мере один раз доставку в приемники выходных данных, что гарантирует вывод всех результатов, но могут возникнуть повторяющиеся результаты. Однако точно один раз доставка может быть достигнута с помощью нескольких выходных данных, таких как Azure Cosmos DB или Azure SQL.
Duplicate records
Из-за по крайней мере однократной гарантии доставки при выполнении задания Stream Analytics повторяющиеся записи иногда могут быть замечены в выходных данных. Эти повторяющиеся записи ожидаются, так как выходные адаптеры Azure Stream Analytics не записывают выходные события транзакционно. Этот сценарий "дубликат записи" может привести к возникновению одного из следующих условий:
- Экземпляр Azure обновляется во время выполнения задания.
- Задание Stream Analytics обновляется или возникает проблема с подключением или надежностью к выходным данным задания.
- Экземпляр Azure, выполняющий задание, имеет сбой
- Задание Stream Analytics запускается с параметром последней остановки
Подчиненный потребитель событий выходных данных должен вывести события с помощью логического удостоверения событий. Например, если вы агрегируете события по группам в переворачиваемом окне, логическое удостоверение события — это группы и время окончания окна переворачивающегося окна. Если выполняется сквозный запрос, может потребоваться использовать уникальный идентификатор события для дедупации.
Выходные данные, поддерживающие точную доставку с помощью Azure Stream Analytics
Azure Cosmos DB (облачная база данных)
Используя Azure Cosmos DB, Azure Stream Analytics гарантирует точно один раз доставку. Так как Azure Stream Analytics использует upsert, никакие действия не требуются пользователю. Дополнительные сведения о выходных данных Azure Stream Analytics в Azure Cosmos DB.
SQL
При использовании выходных данных SQL пользователи могут выполнить точно один раз доставку, если выполнены следующие требования:
- Все события потоковой передачи выходных данных имеют естественный ключ, т. е. однозначно идентифицируются по полю или сочетанию полей.
- Выходная таблица SQL имеет уникальное ограничение (или первичный ключ), созданное с помощью естественного ключа событий вывода.
Это достаточно, чтобы избежать дублирования, так как выходные данные SQL учитывают все ограничения, помещенные в таблицу, пропуская любые события, которые вызывают нарушение уникального ограничения.
Azure Table
Все сущности в таблице хранилища Azure однозначно определяются объединением RowKey полей и PartitionKey полей. Сущности azure Stream Analytics upserts, поэтому значение сущности таблицы будет последним выходным событием с соответствующим RowKey/PartitionKey сочетанием. Таким образом, для достижения точной доставки убедитесь, что каждое выходное событие имеет уникальное RowKey/PartitionKey сочетание. Если это сделано, повторяющиеся события перезаписывают более ранние версии. (Системное поле, которое является последним измененным временем для сущности, по-прежнему Timestamp изменится в этом случае.)