Procesamiento en tiempo realReal time processing

El procesamiento en tiempo real trabaja con flujos de datos que se capturan en tiempo real y se procesan con una latencia mínima para generar informes en tiempo real (o casi en tiempo real), o respuestas automatizadas.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. Por ejemplo, una solución de supervisión del tráfico en tiempo real podría usar datos de sensores para detectar volúmenes de tráfico elevados.For example, a real-time traffic monitoring solution might use sensor data to detect high traffic volumes. Estos datos se pueden utilizar para actualizar dinámicamente un mapa que muestre los atascos o para poner en marcha automáticamente carriles para vehículos con más de un pasajero u otros sistemas de administración de tráfico.This data could be used to dynamically update a map to show congestion, or automatically initiate high-occupancy lanes or other traffic management systems.

Diagrama de una canalización de procesamiento en tiempo real

El procesamiento en tiempo real se define como el procesamiento de flujos no asociados de datos de entrada, con requisitos de latencia muy cortos para el procesamiento, que se miden en milisegundos o segundos.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. Estos datos de entrada normalmente llegan en un formato no estructurado o semiestructurado, como JSON, y tienen los mismos requisitos de procesamiento que el procesamiento por lotes, pero con tiempos de respuesta más cortos para admitir el consumo en tiempo real.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.

Los datos procesados a menudo se escriben en un almacén de datos analíticos que está optimizado para el análisis y la visualización.Processed data is often written to an analytical data store, which is optimized for analytics and visualization. Los datos procesados también se pueden ingerir directamente en el nivel de análisis y de informes para el análisis, la inteligencia empresarial y la visualización de paneles en tiempo real.The processed data can also be ingested directly into the analytics and reporting layer for analysis, business intelligence, and real-time dashboard visualization.

DesafíosChallenges

Uno de los grandes desafíos de las soluciones de procesamiento en tiempo real es ingerir, procesar y almacenar mensajes en tiempo real y en grandes volúmenes.One of the big challenges of real-time processing solutions is to ingest, process, and store messages in real time, especially at high volumes. El procesamiento se debe realizar de tal forma que no bloquee la canalización de ingesta.Processing must be done in such a way that it does not block the ingestion pipeline. El almacén de datos debe admitir la escritura de grandes volúmenes.The data store must support high-volume writes. Otro desafío es poder actuar sobre los datos rápidamente para, por ejemplo, generar alertas en tiempo real o presentar los datos en un panel en tiempo real (o casi en tiempo real).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.

ArquitecturaArchitecture

Una arquitectura de procesamiento en tiempo real tiene los siguientes componentes lógicos.A real-time processing architecture has the following logical components.

  • Ingesta de mensajes en tiempo real.Real-time message ingestion. La arquitectura debe incluir una manera de capturar y almacenar los mensajes en tiempo real para que los consuma un consumidor de procesamiento de flujos.The architecture must include a way to capture and store real-time messages to be consumed by a stream processing consumer. En los casos más sencillos, este servicio se puede implementar como un almacén de datos simple en el que los mensajes nuevos se depositan en una carpeta.In simple cases, this service could be implemented as a simple data store in which new messages are deposited in a folder. Pero, a menudo, la solución requiere un agente de mensajes, como Azure Event Hubs, que actúa como un búfer para los mensajes.But often the solution requires a message broker, such as Azure Event Hubs, that acts as a buffer for the messages. El agente de mensajes debe admitir el procesamiento de escalabilidad horizontal y la entrega confiable.The message broker should support scale-out processing and reliable delivery.

  • Procesamiento de flujos.Stream processing. Una vez capturados los mensajes en tiempo real, la solución debe procesarlos filtrando, agregando o bien preparando los datos para su análisis.After capturing real-time messages, the solution must process them by filtering, aggregating, and otherwise preparing the data for analysis.

  • Almacén de datos analíticos.Analytical data store. Muchas soluciones de macrodatos están diseñadas para preparar los datos para el análisis y luego servir los datos procesados en un formato estructurado que se puede consultar mediante herramientas de análisis.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.

  • Análisis e informes.Analysis and reporting. El objetivo de la mayoría de soluciones de macrodatos consiste en proporcionar información sobre los datos a través de análisis e informes.The goal of most big data solutions is to provide insights into the data through analysis and reporting.

Opciones de tecnologíaTechnology choices

Se recomiendan las siguientes tecnologías para soluciones de procesamiento en tiempo real en Azure.The following technologies are recommended choices for real-time processing solutions in Azure.

Ingesta de mensajes en tiempo realReal-time message ingestion

  • Azure Event Hubs.Azure Event Hubs. Azure Event Hubs es una solución de puesta en cola de mensajes para la ingesta de millones de mensajes de eventos por segundo.Azure Event Hubs is a message queuing solution for ingesting millions of event messages per second. Varios consumidores en paralelo pueden procesar los datos de eventos capturados.The captured event data can be processed by multiple consumers in parallel.
  • Azure IoT Hub.Azure IoT Hub. Azure IoT Hub proporciona una comunicación bidireccional entre los dispositivos conectados a Internet y una cola de mensajes escalable que puede controlar simultáneamente millones de dispositivos conectados.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.Apache Kafka. Kafka es una aplicación de código abierto de puesta en cola de mensajes y procesamiento de flujos que se puede escalar para manejar millones de mensajes por segundo procedentes de varios productores de mensajes y enrutarlos hacia varios consumidores.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 está disponible en Azure como un tipo de clúster de HDInsight.Kafka is available in Azure as an HDInsight cluster type.

Para más información, consulte Ingesta de mensajes en tiempo real.For more information, see Real-time message ingestion.

Almacenamiento de datosData storage

  • Contenedores de blobs de Azure Storage o Azure Data Lake Store.Azure Storage Blob Containers or Azure Data Lake Store. Los datos de entrada en tiempo real normalmente se capturan en un agente de mensajes (consulte más arriba), pero en algunos escenarios puede que tenga sentido supervisar una carpeta para los archivos nuevos y procesarlos a medida que se crean o se actualizan.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. Además, muchas soluciones de procesamiento en tiempo real combinan los datos de streaming con datos de referencia estáticos que se pueden almacenar en un almacén de archivos.Additionally, many real-time processing solutions combine streaming data with static reference data, which can be stored in a file store. Por último, el almacenamiento de archivos se puede utilizar como destino de salida de datos capturados en tiempo real para el archivado o el procesamiento adicional por lotes en una arquitectura lambda.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.

Para más información, consulte Almacenamiento de datos.For more information, see Data storage.

Procesamiento de flujosStream processing

  • Azure Stream Analytics.Azure Stream Analytics. Azure Stream Analytics puede ejecutar consultas perpetuas en un flujo no asociado de datos.Azure Stream Analytics can run perpetual queries against an unbounded stream of data. Estas consultas consumen flujos de datos procedentes del almacenamiento o de los agentes de mensajes, filtran y agregan los datos basados en períodos temporales, y escriben los resultados en receptores como, por ejemplo, soluciones de almacenamiento, bases de datos o directamente en informes de 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 usa un lenguaje de consulta basado en SQL que admite construcciones temporales y geoespaciales, y que se puede ampliar mediante JavaScript.Stream Analytics uses a SQL-based query language that supports temporal and geospatial constructs, and can be extended using JavaScript.
  • Storm.Storm. Apache Storm es una plataforma de código abierto para el procesamiento de flujos que usa una topología de spouts y bolts para consumir, procesar y enviar los resultados de orígenes de datos de streaming en tiempo real.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. Puede aprovisionar Storm en un clúster de Azure HDInsight e implementar una topología en Java o C#.You can provision Storm in an Azure HDInsight cluster, and implement a topology in Java or C#.
  • Spark Streaming.Spark Streaming. Apache Spark es una plataforma distribuida de código abierto para el procesamiento de datos generales.Apache Spark is an open source distributed platform for general data processing. Spark proporciona la API de Spark Streaming, en la que puede escribir código en cualquier lenguaje de Spark compatible, incluidos Java, Scala y Python.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 introdujo la API de Spark Structured Streaming, que proporciona un modelo de programación más sencillo y coherente.Spark 2.0 introduced the Spark Structured Streaming API, which provides a simpler and more consistent programming model. Spark 2.0 está disponible en un clúster de Azure HDInsight.Spark 2.0 is available in an Azure HDInsight cluster.

Para más información, consulte Procesamiento de flujos.For more information, see Stream processing.

Almacén de datos analíticosAnalytical data store

  • SQL Data Warehouse, HBase, Spark o Hive.SQL Data Warehouse, HBase, Spark, or Hive. Los datos procesados en tiempo real se pueden almacenar en una base de datos relacional como Azure SQL Data Warehouse, un almacén NoSQL como Hbase, o como archivos en un almacenamiento distribuido en el que se puedan definir y consultar las tablas de Spark o Hive.Processed real-time data can be stored in a relational database such Azure SQL Data Warehouse, a NoSQL store such as HBase, or as files in distributed storage over which Spark or Hive tables can be defined and queried.

Para más información, consulte Almacenes de datos analíticos.For more information, see Analytical data stores.

Análisis e informesAnalytics and reporting

  • Azure Analysis Services, Power BI, y Microsoft Excel.Azure Analysis Services, Power BI, and Microsoft Excel. Los datos procesados en tiempo real que se almacenan en un almacén de datos analíticos se pueden utilizar para realizar informes y análisis históricos de la misma manera que los datos procesados por lotes.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. Además, Power BI se puede usar para publicar informes y visualizaciones en tiempo real (o casi en tiempo real) desde orígenes de datos analíticos en los que la latencia es lo suficientemente baja o, en algunos casos, directamente desde la salida del procesamiento de flujos.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.

Para más información, consulte Análisis e informes.For more information, see Analytics and reporting.

En una solución exclusivamente en tiempo real, la mayor parte de la orquestación del procesamiento se administra mediante los componentes de ingesta de mensajes y procesamiento de flujos.In a purely real-time solution, most of the processing orchestration is managed by the message ingestion and stream processing components. Sin embargo, en una arquitectura lambda que combina el procesamiento por lotes y el procesamiento en tiempo real, puede que deba usar una plataforma de orquestación como Azure Data Factory o Apache Oozie y Sqoop para administrar flujos de trabajo por lotes para los datos capturados en tiempo real.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.

Pasos siguientesNext steps

La siguiente arquitectura de referencia muestra una canalización de procesamiento de flujos de datos de un extremo a otro:The following reference architecture shows an end-to-end stream processing pipeline: