Обработка в режиме реального времениReal time processing

Обработка в режиме реального времени выполняется для потоков данных, получаемых в реальном времени и обрабатываемых с минимальной задержкой для создания отчетов или автоматизированного реагирования в режиме реального времени (или приближенном к реальному времени).Real time processing deals with streams of data that are captured in real-time and processed with minimal latency to generate real-time (or near-real-time) reports or automated responses. Например, решение для мониторинга дорожного движения в режиме реального времени позволяет отслеживать зоны интенсивного движения по данным от датчиков.For example, a real-time traffic monitoring solution might use sensor data to detect high traffic volumes. На основе этих данных можно динамически обновлять карту с информацией о пробках или автоматического регулировать движение с помощью специальных полос или других систем управления дорожным движением.This data could be used to dynamically update a map to show congestion, or automatically initiate high-occupancy lanes or other traffic management systems.

Схема конвейера обработки в реальном времени

Обработкой в режиме реального времени считается обработка непривязанного потока входных данных с минимальным временем задержки — несколько миллисекунд или секунд.Real-time processing is defined as the processing of unbounded stream of input data, with very short latency requirements for processing — measured in milliseconds or seconds. Эти входящие данные обычно поступают в неструктурированном или полуструктурированном формате, например JSON. Требования к обработке здесь такие же, как и в случае пакетной обработки, кроме дополнительного ограничения по времени для поддержки использования в режиме реального времени.This incoming data typically arrives in an unstructured or semi-structured format, such as JSON, and has the same processing requirements as batch processing, but with shorter turnaround times to support real-time consumption.

Обработанные данные обычно сохраняются в хранилище аналитических данных, которое оптимизировано для анализа и визуализации.Processed data is often written to an analytical data store, which is optimized for analytics and visualization. Также обработанные данные можно напрямую принимать на слоях аналитической обработки и отчетности для анализа, бизнес-аналитики и визуализации на панелях мониторинга в режиме реального времени.The processed data can also be ingested directly into the analytics and reporting layer for analysis, business intelligence, and real-time dashboard visualization.

СложностиChallenges

Одной из главных проблем в любой системе обработки в режиме реального времени является поддержание возможности приема и сохранения сообщений в режиме реального времени, особенно при больших объемах данных.One of the big challenges of real-time processing solutions is to ingest, process, and store messages in real time, especially at high volumes. Обработка должна выполняться так, чтобы не блокировать конвейер приема данных.Processing must be done in such a way that it does not block the ingestion pipeline. Нужно использовать хранилище данных, поддерживающее операции записи в больших объемах.The data store must support high-volume writes. Еще одна проблема — создание возможностей для быстрого реагирования, например для создания оповещений в режиме реального времени или представления данных на панели мониторинга в режиме реального времени (или приближенном к реальному времени).Another challenge is being able to act on the data quickly, such as generating alerts in real time or presenting the data in a real-time (or near-real-time) dashboard.

ArchitectureArchitecture

Архитектура обработки в режиме реального времени состоит из следующих логических компонентов.A real-time processing architecture has the following logical components.

  • Прием сообщений в реальном времени.Real-time message ingestion. Архитектура должна включать средства сбора и сохранения сообщений в режиме реального времени, доступные для объекта-получателя, обрабатывающего поток.The architecture must include a way to capture and store real-time messages to be consumed by a stream processing consumer. В простых случаях роль такой службы может выполнять обычное хранилище данных, в одной из папок которого размещаются новые сообщения.In simple cases, this service could be implemented as a simple data store in which new messages are deposited in a folder. Но чаще для этого компонента нужны специализированные брокеры обмена сообщениями, например Центры событий Azure, которые выполняют роль буфера для входящих сообщений.But often the solution requires a message broker, such as Azure Event Hubs, that acts as a buffer for the messages. Брокер обмена сообщениями должен поддерживать масштабируемую обработку и надежную доставку.The message broker should support scale-out processing and reliable delivery.

  • Потоковая обработка.Stream processing. Сохранив сообщения, поступающие в режиме реального времени, система выполняет для них фильтрацию, статистическую обработку и другие процессы подготовки данных к анализу.After capturing real-time messages, the solution must process them by filtering, aggregating, and otherwise preparing the data for analysis.

  • Хранилище аналитических данных.Analytical data store. Многие решения по обработке больших данных спроектированы так, чтобы подготавливать данные к анализу и предоставлять их в структурированном формате для запросов через средства аналитики.Many big data solutions are designed to prepare data for analysis and then serve the processed data in a structured format that can be queried using analytical tools.

  • Анализ и создание отчетов.Analysis and reporting. Большинство решений по обработке больших данных предназначены для анализа и составления отчетов, что позволяет получить важную информацию.The goal of most big data solutions is to provide insights into the data through analysis and reporting.

Выбор технологийTechnology choices

Мы рекомендуем применять следующие технологии для обработки данных в режиме реального времени в Azure.The following technologies are recommended choices for real-time processing solutions in Azure.

Прием сообщений в реальном времениReal-time message ingestion

  • Концентраторы событий Azure.Azure Event Hubs. Azure Event Hubs — это решение для обмена сообщениями для входного сообщения миллионов событий в секунду.Azure Event Hubs is a messaging solution for ingesting millions of event messages per second. Собранные данные о событиях могут обрабатываться несколькими объектами-получателями в параллельном режиме.The captured event data can be processed by multiple consumers in parallel. В то время как Event Hubs родом поддерживает АМЗП (Расширенный протокол queuing сообщений 1.0), он также предоставляет бинарный слой совместимости, который позволяет приложениям, использующим протокол Kafka (Kafka 1.0 и выше) обрабатывать события с помощью концентраторов событий без изменений приложений.While Event Hubs natively supports AMQP (Advanced Message Queuing Protocol 1.0), it also provides a binary compatibility layer that allows applications using the Kafka protocol (Kafka 1.0 and above) to process events using Event Hubs with no application changes.
  • Azure IoT концентратор.Azure IoT Hub. Центр Интернета вещей Azure поддерживает двунаправленный обмен данными между устройствами, подключенными к Интернету, а также масштабируемую очередь сообщений от нескольких миллионов одновременно подключенных устройств.Azure IoT Hub provides bi-directional communication between Internet-connected devices, and a scalable message queue that can handle millions of simultaneously connected devices.
  • Апач Кафка.Apache Kafka. Приложение с открытым кодом Kafka поддерживает очереди сообщений, потоковую обработку с возможностью масштабирования до нескольких миллионов сообщений в секунду от множества отправителей сообщений, и перенаправление их множеству объектов-получателей.Kafka is an open source message queuing and stream processing application that can scale to handle millions of messages per second from multiple message producers, and route them to multiple consumers. Kafka доступно в Azure как тип кластера HDInsight.Kafka is available in Azure as an HDInsight cluster type.

Дополнительные сведения см. в статье о приеме сообщений в реальном времени.For more information, see Real-time message ingestion.

Хранилище данныхData storage

  • Контейнеры хранилища BLOB-объектов Azure или Azure Data Lake Store.Azure Storage Blob Containers or Azure Data Lake Store. Входящие данные в режиме реального времени обычно поступают в брокер обмена сообщениями (см. выше), но в некоторых случаях следует отслеживать создание новых файлов в папке и обрабатывать их по мере появления или обновления.Incoming real-time data is usually captured in a message broker (see above), but in some scenarios, it can make sense to monitor a folder for new files and process them as they are created or updated. Кроме того, многие системы обработки в режиме реального времени объединяют потоки данных с некоторыми статичными эталонными данными, которые удобно держать в хранилище файлов.Additionally, many real-time processing solutions combine streaming data with static reference data, which can be stored in a file store. И наконец, хранилище файлов можно применить как выходное назначение для собранных данных в реальном времени, где они будут архивироваться или подвергаться дополнительной пакетной обработке в лямбда-архитектуре.Finally, file storage may be used as an output destination for captured real-time data for archiving, or for further batch processing in a lambda architecture.

Дополнительные сведения см. в статье Выбор технологии хранения больших данных в Azure.For more information, see Data storage.

Потоковая обработкаStream processing

  • Аналитика потоков Azure.Azure Stream Analytics. Azure Stream Analytics может выполнять постоянные запросы к непривязанному потоку данных.Azure Stream Analytics can run perpetual queries against an unbounded stream of data. Эти запросы получают потоки данных из хранилища или от брокеров обмена сообщениями, фильтруют данные и статистически обрабатывают их по временным окнам, а затем записывают результаты в приемники, например в хранилище данных, базы данных или сразу в отчеты Power BI.These queries consume streams of data from storage or message brokers, filter and aggregate the data based on temporal windows, and write the results to sinks such as storage, databases, or directly to reports in Power BI. Stream Analytics использует язык запросов на основе SQL, который поддерживает темпоральные и геопространственные конструкции и которые могут быть расширены с помощью JavaScript.Stream Analytics uses a SQL-based query language that supports temporal and geospatial constructs, and can be extended using JavaScript.
  • Шторм.Storm. Платформа с открытым кодом Apache Storm выполняет потоковую обработку данных на основе топологии воронок и сит, позволяя использовать, обрабатывать и выводить результаты от источников потоковой передачи в режиме реального времени.Apache Storm is an open source framework for stream processing that uses a topology of spouts and bolts to consume, process, and output the results from real-time streaming data sources. Вы можете подготовить Storm в кластере Azure HDInsight, а топологию для него реализовать на Java или C#.You can provision Storm in an Azure HDInsight cluster, and implement a topology in Java or C#.
  • Потоковая передача Spark.Spark Streaming. Распределенная платформа Apache Spark с открытым кодом предназначена для простой обработки данных.Apache Spark is an open source distributed platform for general data processing. Spark предоставляет API потоковой передачи Spark, в котором можно написать код на любом поддерживаемом Spark языке, включая Java, Python и Scala.Spark provides the Spark Streaming API, in which you can write code in any supported Spark language, including Java, Scala, and Python. Начиная с версии Spark 2.0 появился API структурированной потоковой передачи Spark, в котором реализована более простая и более согласованная модель программирования.Spark 2.0 introduced the Spark Structured Streaming API, which provides a simpler and more consistent programming model. Spark 2.0 доступен в кластере Azure HDInsight.Spark 2.0 is available in an Azure HDInsight cluster.

Дополнительные сведения см. в статье по потоковой обработке.For more information, see Stream processing.

Хранилище аналитических данныхAnalytical data store

  • Лазурный Synapse Аналитика, HBase, Искра, или Улей.Azure Synapse Analytics, HBase, Spark, or Hive. Обработанные данные в реальном времени могут храниться в реляционной базе данных, такой как Synapse Analytics, магазин НоСЗЛ, такой как HBase, или в файлах в распределенном хранилище, в котором можно определить и заставить задаваемые вопросы таблицы Spark или Hive.Processed real-time data can be stored in a relational database such Synapse Analytics, a NoSQL store such as HBase, or as files in distributed storage over which Spark or Hive tables can be defined and queried.

Дополнительные сведения см. в статье о хранилище аналитических данных.For more information, see Analytical data stores.

Аналитика и отчетностьAnalytics and reporting

  • Azure Analysis Services, Power BI и Microsoft Excel.Azure Analysis Services, Power BI, and Microsoft Excel. Обработанные данные в режиме реального времени, которые содержатся в хранилище аналитических данных, можно использовать для создания хронологических отчетов и аналитики таким же образом, как данные пакетной обработки.Processed real-time data that is stored in an analytical data store can be used for historical reporting and analysis in the same way as batch processed data. Кроме того, можно использовать Power BI для публикации отчетов и визуализации в режиме реального времени (или приближенном к реальному времени) на основе данных из источников аналитических данных с низкой задержкой, а иногда даже напрямую из выходных данных потоковой обработки.Additionally, Power BI can be used to publish real-time (or near-real-time) reports and visualizations from analytical data sources where latency is sufficiently low, or in some cases directly from the stream processing output.

Дополнительные сведения см. в статье Выбор технологии аналитики данных в Azure.For more information, see Analytics and reporting.

В решении, полностью нацеленном на обработку в режиме реального времени, основную часть процессов оркестрации выполняют компоненты приема сообщений и обработки потоков.In a purely real-time solution, most of the processing orchestration is managed by the message ingestion and stream processing components. Но в лямбда-архитектуре, которая сочетает пакетную обработку и обработку в режиме реального времени, может потребоваться отдельная платформа оркестрации, например фабрика данных Azure или Apache Oozie и Sqoop, чтобы управлять рабочими процессами пакетной обработки для собранных данных в режиме реального времени.However, in a lambda architecture that combines batch processing and real-time processing, you may need to use an orchestration framework such as Azure Data Factory or Apache Oozie and Sqoop to manage batch workflows for captured real-time data.

Дальнейшие действияNext steps

На следующей схеме эталонной архитектуры представлен сквозной конвейер потоков данных:The following reference architecture shows an end-to-end stream processing pipeline: