Escolher entre os serviços de mensagens do Azure – Event Grid, Hubs de Eventos e Service Bus
O Azure oferece três serviços que ajudam na entrega de eventos ou mensagens numa 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
Existe uma distinção importante entre os serviços que fornecem 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.
Uma série de eventos comunica 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 publish-subscribe. Os editores emitem eventos, mas não têm expectativas sobre a forma como os eventos são processados. Os subscritores decidem quais os eventos que querem processar.
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:
- Dimensionável dinamicamente
- Baixo custo
- Sem servidor
- Pelo menos uma vez a entrega de um evento
O Event Grid é oferecido em duas edições: Azure Event Grid, um serviço PaaS totalmente gerido no Azure e o Event Grid no Kubernetes com o Azure Arc, que lhe permite utilizar o Event Grid no cluster do Kubernetes onde quer que esteja implementado, no local ou na cloud. Para obter mais informações, veja Azure Event Grid descrição geral e Event Grid no Kubernetes com descrição geral do Azure Arc.
Azure Event Hubs
Hubs de Eventos do Azure é uma plataforma de transmissão em fluxo de macrodados 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 os dados de telemetria e eventos sejam disponibilizados para várias infraestruturas de processamento de fluxos e serviços de análise. Está disponível como fluxos de dados ou lotes de eventos agrupados. Este serviço fornece uma única solução que permite a obtenção rápida de dados para processamento em tempo real e a repetição repetida de dados não processados 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 a entrega de um evento
Para obter mais informações, veja Descrição geral dos Hubs de Eventos.
Service Bus do Azure
O Service Bus é um mediador de mensagens empresariais totalmente gerido com filas de mensagens e tópicos de publicação-subscrição. O serviço destina-se a aplicações empresariais que requerem transações, ordenação, 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. Ao processar mensagens de alto valor que não podem ser perdidas ou duplicadas, utilize Azure Service Bus. Este serviço também facilita a comunicação altamente segura entre soluções de cloud híbridas e pode ligar sistemas no local existentes a soluções na cloud.
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 fiável (mensagens empresariais como um serviço) que requer consultas
- Funcionalidades avançadas de mensagens, como o primeiro a entrar e o primeiro a sair (FIFO), batching/sessões, transações, letras não entregues, controlo temporal, encaminhamento e filtragem e deteção duplicada
- Pelo menos uma vez a entrega de uma mensagem
- Entrega ordenada opcional de mensagens
Para obter mais informações, veja Descrição geral do Service Bus.
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 comércio eletrónico pode utilizar o Service Bus para processar a encomenda, os Hubs de Eventos para capturar a telemetria do site e o Event Grid 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 utilizar o Event Grid com os Hubs de Eventos para migrar dados para o Azure Synapse Analytics, veja Transmitir macrodados para um Azure Synapse Analytics. A imagem abaixo mostra o fluxo de trabalho da transmissão dos dados em fluxo.
Passos seguintes
Consulte os seguintes artigos: