Escolha entre serviços de mensagens Azure - Event Grid, Event Hubs e Service Bus

O Azure oferece três serviços que ajudam na entrega de eventos ou mensagens ao longo de uma solução. Esses serviços são:

  • Azure Event Grid
  • Hubs de Eventos do Azure
  • Azure Service Bus

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.

Serviços de eventos vs. serviços de mensagens

Há uma distinção importante entre serviços que entregam um evento e serviços que entregam 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.

Os eventos discretos comunicam alterações de 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. Poderá ter informações gerais sobre o ficheiro, mas não tem o ficheiro em si. Os eventos discretos são ideais para soluções sem servidor que têm de ser dimensionadas.

Os eventos de série comunicam 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.

Azure Event Grid

O Event Grid é um backplane de eventos que permite a programação reativa e orientada para eventos. Utiliza o modelo de publicação. As editoras emitem eventos, mas não têm expectativas sobre a forma como os eventos são tratados. Os assinantes decidem quais os eventos que querem lidar.

O Event Grid está profundamente integrado nos serviços do Azure e pode ser integrado em 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

Para mais informações, consulte a visão geral da Grelha de Eventos.

Azure Event Hubs

O Azure Event Hubs é uma plataforma de streaming de dados e 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 Centros de Eventos permitem disponibilizar dados de telemetria e eventos para várias infraestruturas de processamento de streaming e serviços de análise. Está disponível como fluxos de dados ou lotes de eventos agregados. Este serviço fornece uma única solução que permite uma rápida recuperação de dados para o 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 mais informações, consulte a visão geral do Event Hubs.

Service Bus do Azure

Service Bus é um corretor de mensagens de empresa totalmente gerido com filas de mensagens e tópicos de subscrição de publicação. O serviço destina-se a aplicações empresariais que exijam transações, encomendas, deteção duplicada 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. Para processar mensagens de alto valor que não podem ser perdidas ou duplicadas, utilize o Azure Service Bus. Este serviço também facilita uma comunicação altamente segura através de soluções híbridas em nuvem e pode ligar os sistemas existentes no local a soluções em 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íncronos fiáveis (mensagens empresariais como serviço) que requer sondagens
  • Funcionalidades avançadas de mensagens como primeira entrada e primeira saída (FIFO), lotes/sessões, transações, letras mortas, controlo temporal, encaminhamento e filtragem e deteção duplicada
  • Pelo menos uma vez entregando uma mensagem
  • Entrega opcional ordenada de mensagens

Para mais informações, consulte Service Bus resumo.

Comparação de serviços

Serviço Objetivo Tipo Quando utilizar
Event Grid Programação reativa Distribuição de 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 e-commerce pode usar Service Bus para processar a encomenda, Os Centros de Eventos para capturar telemetria do site, e Grade de Eventos para responder a eventos como um item foi 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 utilizar o Event Grid com os Hubs de Eventos para migrar dados para um armazém de dados, veja Stream big data into a data warehouse (Transmitir macrodados em fluxo para um armazém de dados). A imagem abaixo mostra o fluxo de trabalho da transmissão dos dados em fluxo.

Imagem mostrando como os Centros de Eventos, Service Bus e Grade de Eventos podem ser conectados entre si.

Passos seguintes

Consulte os seguintes artigos: