Processamento em tempo real

Hubs de Eventos

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. Por exemplo, uma solução de monitorização do tráfego em tempo real pode usar dados de sensores para detetar volumes de tráfego elevados. Estes dados poderiam ser usados para atualizar dinamicamente um mapa para mostrar congestionamento, ou iniciar automaticamente faixas de alta ocupação ou outros sistemas de gestão de tráfego.

Diagram of a real time processing pipeline

O processamento em tempo real é definido como o processamento de fluxo ilimitado de dados de entrada, com requisitos de latência muito curtos para o processamento — medido em milissegundos ou segundos. Estes dados de entrada normalmente chegam num formato não estruturado ou semi-estruturado, como o JSON, e tem os mesmos requisitos de processamento que o processamento de lote, mas com tempos de reviravolta mais curtos para suportar o consumo em tempo real.

Os dados processados são frequentemente escritos numa loja de dados analíticos, que é otimizada para análise e visualização. Os dados processados também podem ser ingeridos diretamente na camada de análise e relatório para análise, inteligência empresarial e visualização do painel em tempo real.

Desafios

Um dos grandes desafios das soluções de processamento em tempo real é ingerir, processar e armazenar mensagens em tempo real, especialmente em volumes elevados. O processamento deve ser efetuado de modo a não bloquear o gasoduto de ingestão. A loja de dados deve suportar gravações de grande volume. Outro desafio é ser capaz de agir rapidamente sobre os dados, como gerar alertas em tempo real ou apresentar os dados num dashboard em tempo real (ou quase em tempo real).

Arquitetura

Uma arquitetura de processamento em tempo real tem os seguintes componentes lógicos.

  • Ingestão de mensagens em tempo real. A arquitetura deve incluir uma forma de capturar e armazenar mensagens em tempo real para serem consumidas por um consumidor de processamento de fluxo. Em casos simples, este serviço poderia ser implementado como uma simples loja de dados em que novas mensagens são depositadas numa pasta. Mas muitas vezes a solução requer um corretor de mensagens, como Hubs de Eventos do Azure, que funciona como um tampão para as mensagens. O corretor de mensagens deve suportar o processamento de escala e entrega fiável.

  • Processamento de fluxos. Após a captura das mensagens em tempo real, a solução tem de processá-las ao filtrar, agregar e preparar os dados para análise.

  • Arquivo de dados analíticos. Muitas soluções de big data são projetadas para preparar dados para análise e, em seguida, servir os dados processados em um formato estruturado que pode ser consultado usando ferramentas analíticas.

  • Análises e relatórios. O objetivo da maioria das soluções de macrodados é proporcionar informações sobre os dados através de análises e relatórios.

Opções de tecnologia

As seguintes tecnologias são recomendadas para soluções de processamento em tempo real em Azure.

Ingestão de mensagens em tempo real

  • Hubs de Eventos do Azure. Hubs de Eventos do Azure é uma solução de mensagens para ingerir milhões de mensagens de evento por segundo. Os dados do evento capturados podem ser processados por vários consumidores em paralelo. Embora o Event Hubs suporte de forma nativa AMQP (Advanced Message Queuing Protocol 1.0), também fornece uma camada de compatibilidade binária que permite que as aplicações que usam o protocolo Kafka (Kafka 1.0 ou superior) processem eventos usando Centros de Eventos sem alterações de aplicação.
  • Hub IoT do Azure. Hub IoT do Azure fornece comunicação bidis entre dispositivos ligados à Internet e uma fila de mensagens escaláveis que pode lidar com milhões de dispositivos simultaneamente ligados.
  • Apache Kafka. Kafka é uma aplicação de processamento de mensagens open source que pode escalar para lidar com milhões de mensagens por segundo de vários produtores de mensagens, e encaminhá-las para vários consumidores. A Kafka está disponível no Azure como um tipo de cluster HDInsight, com Azure Events for Kafka, e também disponível através do ConfluentCloud através da nossa parceria com a Confluent.

Para mais informações, consulte a ingestão de mensagens em tempo real.

Armazenamento de dados

  • Azure Armazenamento Blob Containers ou Azure Data Lake Store. Os dados em tempo real são geralmente capturados num corretor de mensagens (ver acima), mas em alguns cenários, pode fazer sentido monitorizar uma pasta para novos ficheiros e processá-los à medida que são criados ou atualizados. Além disso, muitas soluções de processamento em tempo real combinam dados de streaming com dados de referência estáticos, que podem ser armazenados numa loja de ficheiros. Finalmente, o armazenamento de ficheiros pode ser usado como um destino de saída para dados capturados em tempo real para arquivamento, ou para posterior processamento de lote numa arquitetura lambda.

Para mais informações, consulte o armazenamento de dados.

Processamento de fluxos

  • Azure Stream Analytics. O Azure Stream Analytics pode executar consultas perpétuas contra um fluxo de dados ilimitado. Estas consultas consomem fluxos de dados de corretores de armazenamento ou de mensagens, filtram e agregam os dados com base em janelas temporais, e escrevem os resultados em pias como armazenamento, bases de dados ou diretamente para relatórios em Power BI. Stream Analytics usa uma linguagem de consulta baseada em SQL que suporta construções temporais e geoespaciais, e pode ser estendida usando JavaScript.
  • Uma tempestade. Apache Storm é um quadro open source para o processamento de fluxo que usa uma topologia de bicos e parafusos para consumir, processar e produzir os resultados de fontes de dados de streaming em tempo real. Você pode providenciar Storm em um cluster Azure HDInsight, e implementar uma topologia em Java ou C#.
  • Spark Streaming. Apache Spark é uma plataforma distribuída open source para o processamento geral de dados. Spark fornece a API de streaming de faíscas, na qual você pode escrever código em qualquer língua de Faísca apoiada, incluindo Java, Scala e Python. A Spark 2.0 introduziu a API de Streaming Estruturada de Faíscas, que proporciona uma programação mais simples e consistente modelo. Spark 2.0 está disponível num cluster Azure HDInsight.

Para mais informações, consulte o processamento do Stream.

Loja de dados analíticos

  • Azure Synapse Analytics, Azure Data Explorer, HBase, Spark ou Hive. Os dados processados em tempo real podem ser armazenados numa base de dados relacional como a Synapse Analytics, Azure Data Explorer, uma loja NoSQL como a HBase, ou como ficheiros em armazenamento distribuído sobre os quais as tabelas Spark ou Hive podem ser definidas e consultadas.

Para mais informações, consulte as lojas de dados analíticas.

Análises e relatórios

  • Azure Analysis Services, Power BI e Microsoft Excel. Os dados processados em tempo real que são armazenados numa loja de dados analíticos podem ser utilizados para relatórios e análises históricas da mesma forma que os dados processados em lote. Além disso, Power BI podem ser usadas para publicar relatórios e visualizações em tempo real (ou quase em tempo real) de fontes de dados analíticas em que a latência é suficientemente baixa, ou em alguns casos diretamente da saída de processamento de fluxo.

Para mais informações, consulte Analytics e reportagens.

Numa solução puramente em tempo real, a maior parte da orquestração de processamento é gerida pela ingestão de mensagens e componentes de processamento de fluxo. No entanto, numa arquitetura lambda que combina processamento de lotes e processamento em tempo real, você pode precisar usar um quadro de orquestração como Azure Data Factory ou Apache Oozie e Sqoop para gerir fluxos de trabalho de lote para dados capturados em tempo real.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuintes.

Autor principal:

A seguinte arquitetura de referência mostra um gasoduto de processamento de fluxo de ponta a ponta: