Escolha entre os serviços de mensagens do Azure - Grade de Eventos, Hubs de Eventos e Service Bus

O Azure oferece três serviços que ajudam a entregar eventos ou mensagens em toda uma solução. Esses serviços são: Grade de Eventos do Azure, Hubs de Eventos do Azure, Barramento de Serviço do Azure.

Embora tenham alguns semelhanças, cada serviço foi concebido para determinados cenários. Este artigo descreve as diferenças entre esses serviços e ajuda-o a compreender qual escolher para a sua aplicação. Em muitos casos, os serviços de mensagens são complementares e podem ser utilizados em conjunto.

Eventos vs. mensagens

Há uma distinção importante entre serviços que entregam um evento e serviços que transmitem uma mensagem.

Evento

Um evento é uma notificação simples de uma condição ou alteração de estado. O publicador do evento não tem nenhum expectativa sobre o modo como o evento é processado. O consumidor do evento decide o que fazer com a notificação. Os eventos podem ser unidades discretas ou fazer parte de uma série.

Eventos discretos relatam alterações em um estado e são acionáveis. Para dar o passo seguinte, o consumidor só tem de saber que algo aconteceu. Os dados do evento têm informações sobre o que aconteceu, mas não têm os dados que o acionaram. Por exemplo, um evento notifica os consumidores de que foi criado um ficheiro. Ele pode ter informações gerais sobre o arquivo, mas não tem o arquivo em si. Os eventos discretos são ideais para soluções sem servidor que têm de ser dimensionadas.

Uma série de eventos relata uma condição e são analisáveis. Os eventos são ordenados por tempo e inter-relacionados. O consumidor precisa da série sequenciada de eventos para analisar o que aconteceu.

Mensagem

Uma mensagem são dados não processados produzidos por um serviço e que vão ser consumidos ou armazenados noutro local. A mensagem contém os dados que acionaram o pipeline de mensagens. O publicador da mensagem tem expectativas sobre a forma como o consumidor processa a mensagem. Existe um contrato entre os dois lados. Por exemplo, o publicador envia uma mensagem com os dados não processados e espera que o consumidor crie um ficheiro a partir dos mesmos e envie uma resposta quando o trabalho estiver concluído.

Agora, vamos analisar rapidamente o que é a Grade de Eventos do Azure, os Hubs de Eventos do Azure e o Barramento de Serviço do Azure.

Grelha de Eventos do Azure

A Grade de Eventos do Azure é um serviço de distribuição de mensagens Pub Sub altamente escalável e totalmente gerenciado que oferece padrões flexíveis de consumo de mensagens usando os protocolos MQTT (Transporte de Telemetria de Enfileiramento de Mensagens) e HTTP. Com a Grade de Eventos do Azure, você pode criar pipelines de dados com dados de dispositivo, integrar aplicativos e criar arquiteturas sem servidor orientadas a eventos.

O serviço fornece um backbone de eventos que permite a programação reativa e orientada a eventos. Utiliza o modelo publicar-subscrever. Os editores emitem eventos, mas não têm expectativa sobre como os eventos são tratados. Os subscritores decidem quais os eventos que pretendem realizar.

A Grade de Eventos é profundamente integrada com outros serviços do Azure e pode ser integrada a serviços de terceiros. Ao eliminar a necessidade de consultas constantes, simplifica o consumo de eventos e reduz os custos. Encaminha, de forma eficiente e fiável, os eventos de recursos do Azure e não Azure. Distribui os eventos para pontos finais de subscritor registado. A mensagem do evento tem as informações que sã precisas para reagir a alterações em serviços e aplicações. O Event Grid não é um pipeline de dados e não entrega o objeto propriamente dito que foi atualizado.

Tem as seguintes caraterísticas:

  • Dinamicamente escalável
  • Baixo custo
  • Sem servidor
  • Pelo menos uma vez entrega de um evento

A Grade de Eventos é oferecida em duas edições: Grade de Eventos do Azure, um serviço PaaS totalmente gerenciado no Azure, e Grade de Eventos no Kubernetes com Azure Arc, que permite usar a Grade de Eventos em seu cluster Kubernetes onde quer que seja implantado, no local ou na nuvem. Para obter mais informações, consulte Visão geral da Grade de Eventos do Azure e Visão geral da Grade de Eventos no Kubernetes com o Azure Arc.

Hubs de Eventos do Azure

Os Hubs de Eventos do Azure são uma plataforma de streaming de big data e um serviço de ingestão de eventos. Pode receber e processar milhões de eventos por segundo. Facilita a captura, retenção e reprodução de dados de transmissão de telemetria e eventos. Os dados podem ter várias origens em simultâneo. Os Hubs de Eventos permitem que a telemetria e os dados de eventos sejam disponibilizados para várias infraestruturas de processamento de fluxo e serviços de análise. Está disponível como fluxos de dados ou lotes de eventos agrupados. Este serviço fornece uma solução única que permite a recuperação rápida de dados para processamento em tempo real e repetição repetida de dados brutos armazenados. Pode capturar os dados de transmissão em fluxo num ficheiro para processamento e análise.

Tem as seguintes caraterísticas:

  • Baixa latência
  • Pode receber e processar milhões de eventos por segundo
  • Pelo menos uma vez entrega de um evento

Para obter mais informações, consulte Visão geral dos Hubs de Eventos.

Azure Service Bus

O Service Bus é um agente de mensagens empresariais totalmente gerenciado com filas de mensagens e tópicos de publicação-assinatura. O serviço destina-se a aplicações empresariais que requerem transações, ordenação, deteção de duplicados e consistência instantânea. Com o Service Bus, as aplicações nativas da cloud podem proporcionar gestão de transição de estados fiável para os processos empresariais. Ao lidar com mensagens de alto valor que não podem ser perdidas ou duplicadas, use o Barramento de Serviço do Azure. Esse serviço também facilita a comunicação altamente segura entre soluções de nuvem híbrida e pode conectar sistemas locais existentes a soluções de nuvem.

O Service Bus é um sistema de mensagens mediadas. Armazena as mensagens num "mediador" (por exemplo, uma fila) até que a parte consumidora esteja preparada para recebê-las. Tem as seguintes caraterísticas:

  • Entrega de mensagens assíncrona confiável (mensagens corporativas como um serviço) que requer sondagem. Se você estiver usando o Service Bus e precisar receber mensagens sem precisar sondar a fila, poderá obtê-lo usando uma longa operação de recebimento de sondagem usando os protocolos baseados em TCP suportados pelo Service Bus.
  • Recursos avançados de mensagens, como FIFO (first-in and first-out), batching/sessions, transações, dead-lettering, controle temporal, roteamento e filtragem e deteção de duplicados
  • Pelo menos uma vez entrega de uma mensagem
  • Entrega ordenada opcional de mensagens

Para obter mais informações, consulte Visão geral do Service Bus.

Comparação de serviços

A tabela a seguir compara os três serviços: Grade de Eventos, Hubs de Eventos e Service Bus.

Serviço Propósito Type Quando utilizar o
Event Grid Programação reativa Distribuição de eventos (eventos discretos) Reagir a alterações de estado
Hubs de Eventos Pipeline de macrodados Transmissão de eventos em fluxo (série) Transmissão de telemetria e dados distribuídos em fluxo
Service Bus Mensagens empresariais de alto valor Mensagem Processamento de encomendas e de transações financeiras

Utilizar os serviços em conjunto

Em alguns casos, pode utilizar os serviços lado a lado para dar resposta a funções distintas. Por exemplo, um site de comércio eletrônico pode usar o Service Bus para processar o pedido, Hubs de Eventos para capturar a telemetria do site e Grade de Eventos para responder a eventos como se um item fosse enviado.

Noutros casos, pode utilizá-los ao mesmo tempo para formar um pipeline de eventos e dados. O Event Grid é utilizado para responder aos eventos dos outros serviços. Para obter um exemplo de como usar a Grade de Eventos com Hubs de Eventos para migrar dados para o Azure Synapse Analytics, consulte Transmitir big data para o Azure Synapse Analytics. A imagem abaixo mostra o fluxo de trabalho da transmissão dos dados em fluxo.

Diagrama mostrando como Hubs de Eventos, Barramento de Serviço e Grade de Eventos podem ser conectados juntos.

Consulte os seguintes artigos: