Открыть сервис

Azure Stream Analytics

Azure Stream Analytics — это облачный сервис обработки потоковых данных в реальном времени, предоставляемый корпорацией Microsoft в составе платформы Microsoft Azure. Сервис предназначен для приёма, анализа и трансформации больших объёмов данных, поступающих непрерывно из различных источников, с последующей выдачей результатов в хранилища, базы данных, панели мониторинга или другие сервисы. Azure Stream Analytics позволяет разрабатывать и выполнять задания обработки потоков на языке запросов, похожем на SQL, без необходимости управления инфраструктурой.

История

Развитие облачных вычислений и рост числа устройств Интернета вещей (IoT) привели к появлению потребности в инструментах, способных обрабатывать данные в реальном времени. Корпорация Microsoft представила Azure Stream Analytics в 2014 году на конференции Build. Изначально сервис был ориентирован на аналитику телеметрии и журналов событий. В последующие годы функциональность расширялась: были добавлены поддержка сложных событий (Complex Event Processing, CEP), возможность интеграции с машинным обучением, а также поддержка бессерверных вычислений и масштабирования без остановки заданий. В 2021 году была представлена версия сервиса для Azure Stack Hub, позволяющая развёртывать задания в локальных средах.

Архитектура и принцип работы

Azure Stream Analytics работает по модели «задания» (job). Задание состоит из трёх основных компонентов: источника входных данных (input), преобразования (query) и приёмника выходных данных (output).

Входные данные (Inputs)

Задание может принимать данные из нескольких поддерживаемых источников:

  • Azure Event Hubs — платформа для приёма и обработки миллионов событий в секунду.
  • Azure IoT Hub — управляемый облачный сервис для двусторонней связи с устройствами IoT.
  • Azure Blob Storageхранилище больших двоичных объектов, часто используется для чтения архивных данных или для воспроизведения потоков из файлов.
  • Azure Data Lake Storage Gen2 — масштабируемое хранилище для аналитики больших данных.

Преобразование (Query)

Ядром сервиса является язык запросов, основанный на SQL. Он расширен специальными конструкциями для работы с временными окнами (Windowing), агрегации событий и обнаружения шаблонов. Примеры оконных функций: TumblingWindow (окно без перекрытия), HoppingWindow (окно с перекрытием), SlidingWindow (окно, сдвигающееся по каждому новому событию), SessionWindow (окно, закрывающееся после периода бездействия). Запросы могут включать операции JOIN, фильтрацию, проекцию, а также вызовы пользовательских функций на JavaScript или C# (через UDF — User-Defined Functions).

Выходные данные (Outputs)

Результаты обработки могут быть направлены в один или несколько приёмников:

  • Azure SQL Database и Azure Synapse Analytics — для реляционного хранения.
  • Azure Cosmos DB — для документо-ориентированного хранения.
  • Power BI — для визуализации в реальном времени.
  • Azure Event Hubs — для передачи данных в другие сервисы.
  • Azure Blob Storage или Azure Data Lake Storage — для долгосрочного хранения.
  • Azure Functions — для выполнения произвольного кода.

Ключевые характеристики

Масштабируемость и производительность

Azure Stream Analytics поддерживает автоматическое масштабирование (auto-scaling) на основе нагрузки. Единицей масштабирования является «единица потоковой передачи» (Streaming Unit, SU). Каждая SU предоставляет определённый объём вычислительных ресурсов (память, процессор). Количество SU может быть настроено вручную или автоматически изменяться в зависимости от объёма входящих данных. Сервис способен обрабатывать миллионы событий в секунду при соответствующем количестве SU.

Обработка событий с гарантиями

Сервис обеспечивает гарантию доставки «как минимум один раз» (at-least-once) для большинства выходных приёмников и «ровно один раз» (exactly-once) для некоторых, например, для Azure SQL Database при использовании транзакций. Временная метка события может быть взята из самого события (например, время датчика) или назначена системой при поступлении (время прибытия). Это позволяет обрабатывать события с задержками и переупорядочиванием.

Интеграция с машинным обучением

Azure Stream Analytics может вызывать модели машинного обучения, размещённые в Azure Machine Learning, для выполнения прогнозной аналитики в реальном времени. Например, можно выявлять аномалии на потоке данных датчиков или классифицировать текстовые сообщения. Вызов модели осуществляется через пользовательскую функцию, которая отправляет данные в конечную точку REST API.

Безопасность и соответствие требованиям

Сервис поддерживает шифрование данных в покое (Azure Storage Service Encryption) и в пути (TLS). Управление доступом осуществляется через Azure Role-Based Access Control (RBAC) и управляемые удостоверения (Managed Identities). Azure Stream Analytics соответствует ряду отраслевых стандартов, включая ISO 27001, SOC 1/2/3, HIPAA и GDPR.

Применение

Azure Stream Analytics используется в различных отраслях для решения задач, требующих анализа данных в реальном времени.

Промышленность и Интернет вещей (IoT)

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

Финансовый сектор

Банки и финансовые организации применяют Azure Stream Analytics для обнаружения мошеннических транзакций в реальном времени. Анализируя поток транзакций, сервис может выявить подозрительные паттерны (например, множество мелких операций за короткий промежуток времени) и заблокировать карту или уведомить службу безопасности.

Розничная торговля

Ритейлеры используют сервис для мониторинга поведения покупателей в магазинах и интернет-магазинах. Данные о покупках, просмотрах и перемещениях (через Wi-Fi или Bluetooth-маяки) обрабатываются для персонализации предложений, управления запасами и оптимизации размещения товаров.

Телекоммуникации

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

Здравоохранение

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

Примеры использования

Аналитика логов веб-сервера

Организация может собирать логи HTTP-запросов с веб-серверов через Azure Event Hubs. Задание Azure Stream Analytics выполняет запрос, который группирует запросы по коду ответа (200, 404, 500) за скользящее окно в 5 минут. Результаты отправляются в Power BI для визуализации панели мониторинга, показывающей количество ошибок в реальном времени.

Обработка данных с датчиков температуры

На складе установлены датчики температуры, отправляющие данные в Azure IoT Hub. Задание Azure Stream Analytics фильтрует события, где температура превышает 30°C, и агрегирует их по идентификатору датчика за 10-минутное окно. Если количество превышений за окно больше 5, задание отправляет уведомление в Azure Functions, которая вызывает SMS-шлюз для оповещения персонала.

Ограничения и особенности

  • Задержка (Latency): Сервис обеспечивает задержку от секунды до нескольких минут в зависимости от сложности запроса и количества SU. Для приложений, требующих субсекундной задержки, могут потребоваться другие решения, например, Azure Functions или Apache Flink.
  • Стоимость: Оплата взимается за количество Streaming Units в час. Для длительных, высоконагруженных заданий стоимость может быть значительной.
  • Ограничения по запросам: Не все конструкции SQL поддерживаются. Например, отсутствуют рекурсивные запросы и некоторые типы окон. Сложные алгоритмы могут потребовать вызова внешних функций.
  • Управление состоянием: Сервис автоматически управляет состоянием оконных агрегаций, но при сбоях или перезапуске задания может потребоваться время на восстановление состояния.

Критика

Основные замечания к Azure Stream Analytics связаны с его привязкой к экосистеме Microsoft Azure, что затрудняет миграцию на другие платформы. Также отмечается, что для сложных сценариев обработки событий (например, с большим количеством JOIN или сложной логикой обнаружения паттернов) производительность может снижаться, а стоимость — расти. Некоторые пользователи указывают на недостаточную гибкость языка запросов по сравнению с полноценными фреймворками для потоковой обработки, такими как Apache Flink или Apache Spark Structured Streaming.

Источники

  • Документация Microsoft Azure: «What is Azure Stream Analytics?»
  • Microsoft Docs: «Azure Stream Analytics job overview»
  • Microsoft Docs: «Windowing functions in Azure Stream Analytics»
  • Microsoft Docs: «Scale Azure Stream Analytics jobs»
  • Microsoft Docs: «Event ordering and late arrival policies in Azure Stream Analytics»
  • Книга: «Microsoft Azure Stream Analytics: Real-Time Analytics for the Cloud» (Microsoft Press, 2018)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →