Processamento em tempo realReal time processing

O processamento em tempo real lida com fluxos de dados que são capturados em tempo real e processados com latência mínima para gerar relatórios em tempo real (ou quase em tempo real) ou respostas 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 exemplo, uma solução de monitoramento de tráfego em tempo real pode usar dados de sensor para detectar grandes volumes de tráfego.For example, a real-time traffic monitoring solution might use sensor data to detect high traffic volumes. Esses dados podem ser usados para atualizar um mapa dinamicamente para mostrar o congestionamento ou iniciar automaticamente faixas de ocupação alta ou outros sistemas de gerenciamento de tráfego.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 um pipeline de processamento em tempo real

O processamento em tempo real é definido como o processamento de fluxo não associado de dados de entrada, com requisitos de latência muito curta para o processamento — medido em milissegundos ou 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. Normalmente, esses dados de entrada são recebidos em um formato não estruturado ou semiestruturado, como JSON, e têm os mesmos requisitos de processamento do processamento em lotes, mas com tempos de retorno mais curtos para dar suporte ao consumo em tempo 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.

Os dados processados costumam ser gravados em um armazenamento de dados analíticos, otimizado para análise e visualização.Processed data is often written to an analytical data store, which is optimized for analytics and visualization. Os dados processados também podem ser ingeridos diretamente na camada de análise e relatório para análise, business intelligence e visualização de painel em tempo real.The processed data can also be ingested directly into the analytics and reporting layer for analysis, business intelligence, and real-time dashboard visualization.

DesafiosChallenges

Um dos grandes desafios das soluções de processamento em tempo real é ingerir, processar e armazenar mensagens em tempo real, especialmente em grandes volumes.One of the big challenges of real-time processing solutions is to ingest, process, and store messages in real time, especially at high volumes. O processamento precisa ser feito de forma que não bloqueie o pipeline de ingestão.Processing must be done in such a way that it does not block the ingestion pipeline. O armazenamento de dados precisa dar suporte a gravações de alto volume.The data store must support high-volume writes. Outro desafio é conseguir tomar decisões com base nos dados rapidamente, como a geração de alertas em tempo real ou apresentação dos dados em um painel em tempo real (ou quase em tempo 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.

ArquiteturaArchitecture

Uma arquitetura de processamento em tempo real contém os componentes lógicos a seguir.A real-time processing architecture has the following logical components.

  • Ingestão de mensagens em tempo real.Real-time message ingestion. A arquitetura precisa incluir uma forma de capturar e armazenar mensagens em tempo real para serem consumidas por um consumidor de processamento de fluxo.The architecture must include a way to capture and store real-time messages to be consumed by a stream processing consumer. Em casos simples, esse serviço pode ser implementado como um armazenamento de dados simples em que as novas mensagens são depositadas em uma pasta.In simple cases, this service could be implemented as a simple data store in which new messages are deposited in a folder. Mas, em geral, a solução exige um agente de mensagens, como os Hubs de Eventos do Azure, que atua como um buffer para as mensagens.But often the solution requires a message broker, such as Azure Event Hubs, that acts as a buffer for the messages. O agente de mensagens deve dar suporte ao processamento de expansão e à entrega confiável.The message broker should support scale-out processing and reliable delivery.

  • Processamento de fluxo.Stream processing. Depois de capturar mensagens em tempo real, a solução precisa processá-las filtrando, agregando e preparando os dados para análise.After capturing real-time messages, the solution must process them by filtering, aggregating, and otherwise preparing the data for analysis.

  • Armazenamento de dados analíticos.Analytical data store. Muitas soluções de Big Data foram projetadas para preparar dados para análise e então fornecer os dados processados em um formato estruturado que pode ser consultado com ferramentas analíticas.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álise e relatórios.Analysis and reporting. A meta da maioria das soluções de Big Data é gerar insights sobre os dados por meio de análise e relatórios.The goal of most big data solutions is to provide insights into the data through analysis and reporting.

Opções de tecnologiaTechnology choices

As tecnologias a seguir são as opções recomendadas de soluções de processamento em tempo real do Azure.The following technologies are recommended choices for real-time processing solutions in Azure.

Ingestão de mensagens em tempo realReal-time message ingestion

  • Hubs de eventos azure.Azure Event Hubs. O Azure Event Hubs é uma solução de mensagens para ingerer milhões de mensagens de eventos por segundo.Azure Event Hubs is a messaging solution for ingesting millions of event messages per second. Os dados de evento capturados podem ser processados por vários consumidores em paralelo.The captured event data can be processed by multiple consumers in parallel. Embora o Event Hubs suporte nativamente amqp (Advanced Message Queuing Protocol 1.0), ele também fornece uma camada de compatibilidade binária que permite que aplicativos usando o protocolo Kafka (Kafka 1.0 e acima) processem eventos usando Hubs de Eventos sem alterações de aplicativos.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 Hub.Azure IoT Hub. O Hub IoT do Azure fornece comunicação bidirecional entre dispositivos conectados à Internet e uma fila de mensagens escalonável que pode manipular milhões de dispositivos conectados simultaneamente.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. O Kafka é um aplicativo de software livre de enfileiramento de mensagens e processamento de fluxo que pode ser dimensionado para manipular milhões de mensagens por segundo de vários produtores de mensagens e encaminhá-las para vários 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. O Kafka está disponível no Azure como um tipo de cluster HDInsight.Kafka is available in Azure as an HDInsight cluster type.

Para obter mais informações, consulte Ingestão de mensagens em tempo real.For more information, see Real-time message ingestion.

Armazenamento de dadosData storage

  • Contêineres do Azure Storage Blob ou Azure Data Lake Store.Azure Storage Blob Containers or Azure Data Lake Store. Os dados de entrada em tempo real normalmente são capturados em um agente de mensagens (veja acima), mas em alguns cenários, pode fazer sentido monitorar os novos arquivos de uma pasta e processá-los conforme eles são criados ou atualizados.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. Além disso, muitas soluções de processamento em tempo real combinam dados de streaming com os dados de referência estática, que podem ser armazenados em um repositório de arquivos.Additionally, many real-time processing solutions combine streaming data with static reference data, which can be stored in a file store. Por fim, o armazenamento de arquivos pode ser usado como um destino de saída para os dados capturados em tempo real para arquivamento ou para um processamento em lotes posterior em uma arquitetura 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 obter mais informações, consulte Armazenamento de dados.For more information, see Data storage.

Processamento de fluxoStream processing

  • Azure Stream Analytics.Azure Stream Analytics. O Azure Stream Analytics pode executar consultas perpétuas em um fluxo não associado de dados.Azure Stream Analytics can run perpetual queries against an unbounded stream of data. Essas consultas consomem fluxos de dados de um armazenamento ou agentes de mensagens, filtram e agregam os dados com base em janelas temporais e gravam os resultados em coletores como armazenamento, bancos de dados ou diretamente em relatórios no 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. O Stream Analytics usa uma linguagem de consulta baseada em SQL que oferece suporte a constructos temporais e geoespaciais e pode ser estendida usando JavaScript.Stream Analytics uses a SQL-based query language that supports temporal and geospatial constructs, and can be extended using JavaScript.
  • Tempestade.Storm. O Apache Storm é uma estrutura de software livre para processamento de fluxo que usa uma topologia de spouts e bolts para consumir, processar e gerar os resultados de fontes de dados de streaming em tempo 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. Provisione o Storm em um cluster Azure HDInsight e implemente uma topologia em Java ou C#.You can provision Storm in an Azure HDInsight cluster, and implement a topology in Java or C#.
  • Spark Streaming.Spark Streaming. O Apache Spark é uma plataforma distribuída de software livre para processamento geral de dados.Apache Spark is an open source distributed platform for general data processing. O Spark fornece a API do Spark Streaming, na qual você pode escrever um código em qualquer linguagem Spark compatível, incluindo Java, Scala e Python.Spark provides the Spark Streaming API, in which you can write code in any supported Spark language, including Java, Scala, and Python. O Spark 2.0 introduziu a API de Streaming Estruturado do Spark, que fornece um modelo de programação simples e mais consistente.Spark 2.0 introduced the Spark Structured Streaming API, which provides a simpler and more consistent programming model. O Spark 2.0 está disponível em um cluster Azure HDInsight.Spark 2.0 is available in an Azure HDInsight cluster.

Para obter mais informações, consulte Processamento de fluxo.For more information, see Stream processing.

Armazenamento de dados analíticosAnalytical data store

  • Azure Synapse Analytics, HBase, Sparkou Hive.Azure Synapse Analytics, HBase, Spark, or Hive. Os dados processados em tempo real podem ser armazenados em um banco de dados relacional, como o Synapse Analytics, um armazenamento NoSQL como o HBase, ou como arquivos em armazenamento distribuído sobre os quais as tabelas Spark ou Hive podem ser definidas e consultadas.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.

Para obter mais informações, consulte Armazenamentos de dados analíticos.For more information, see Analytical data stores.

Análise e relatóriosAnalytics and reporting

  • Azure Analysis Services, Power BI e Microsoft Excel.Azure Analysis Services, Power BI, and Microsoft Excel. Os dados processados em tempo real que são armazenados em um armazenamento de dados analíticos podem ser usados para análise e relatórios históricos da mesma maneira que os dados processados em 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. Além disso, o Power BI pode ser usado para publicar relatórios em tempo real (ou quase em tempo real) e visualizações de fontes de dados analíticos, em que a latência é suficientemente baixa, ou em alguns casos, diretamente na saída de processamento do fluxo.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 obter mais informações, consulte Análise e relatórios.For more information, see Analytics and reporting.

Em uma solução totalmente em tempo real, a maioria da orquestração de processamento é gerenciada pelos componentes de ingestão de mensagens e processamento de fluxo.In a purely real-time solution, most of the processing orchestration is managed by the message ingestion and stream processing components. No entanto, em uma arquitetura lambda que combina o processamento em lotes e o processamento em tempo real, talvez você precise usar uma estrutura de orquestração como o Azure Data Factory ou o Apache Oozie e Sqoop para gerenciar fluxos de trabalho em lotes para os dados capturados em tempo 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.

Próximas etapasNext steps

A arquitetura de referência a seguir mostra um pipeline de processamento de fluxo de ponta a ponta:The following reference architecture shows an end-to-end stream processing pipeline: