Escolher uma Grade de Eventos do Azure

Concluído

Muitos aplicativos usam um modelo de publicação/assinatura para notificar os componentes distribuídos de que algo aconteceu ou de que algum objeto foi alterado. Suponha que você tenha um aplicativo de compartilhamento de músicas com uma API Web que é executada no Azure. Quando um usuário carrega uma nova música, você precisa notificar todos os aplicativos móveis instalados nos dispositivos de usuários no mundo todo que estejam interessados nesse gênero.

Nessa arquitetura, o publicador do arquivo de som não precisa saber quais são os assinantes interessados na música compartilhada. Além disso, desejamos ter uma relação um-para-muitos, na qual podemos ter vários assinantes que podem decidir, opcionalmente, se estão interessados nessa nova música. A Grade de Eventos do Azure é uma solução perfeita para esse tipo de arquitetura.

O que é a Grade de Eventos do Azure?

A Grade de Eventos do Azure é um serviço de roteamento de evento totalmente gerenciado, baseado no Azure Service Fabric. A Grade de Eventos distribui eventos de diferentes fontes, como contas do Armazenamento de Blobs do Azure ou Serviços de Mídia do Azure, para diferentes manipuladores, como o Azure Functions ou Webhooks. A Grade de Eventos foi criada para facilitar a criação de aplicativos baseados em eventos e sem servidor no Azure.

A Grade de Eventos dá suporte à maioria dos serviços do Azure como publicador ou assinante e pode ser usada com serviços de terceiros. Ela fornece um sistema de mensagens dinamicamente escalonável e de baixo custo que permite aos publicadores notificar os assinantes sobre uma alteração de status. A ilustração a seguir mostra a Grade de Eventos do Azure recebendo mensagens de várias fontes e distribuindo-as para manipuladores de eventos com base na assinatura.

Há vários conceitos na Grade de Eventos do Azure que conectam uma fonte a um assinante:

  • Eventos: o que aconteceu.
  • Origens do evento: em que local ocorreu o evento.
  • Tópicos: o ponto de extremidade em que os publicadores enviam eventos.
  • Assinaturas de evento: o ponto de extremidade ou o mecanismo interno para encaminhar eventos, às vezes, para vários manipuladores. Os manipuladores também usam assinaturas para filtrar eventos de entrada de maneira inteligente.
  • Manipuladores de eventos: o aplicativo ou o serviço que responde ao evento.

A ilustração a seguir mostra uma Grade de Eventos do Azure posicionada entre várias origens de evento e vários manipuladores de eventos. As origens de evento enviam eventos para a Grade de Eventos e ela encaminha os eventos relevantes para os assinantes. A Grade de Eventos usa tópicos para decidir quais eventos serão enviados para quais manipuladores. As origens dos eventos marcam cada evento com um ou mais tópicos, e os manipuladores assinam os tópicos em que estão interessados.

Diagram of various event sources sending messages as topics to the Event Grid which in turn sends messages to subscribing event handlers.

O que é um evento?

Eventos são as mensagens de dados que passam pela Grade de Eventos que descrevem o que ocorreu. Cada evento é autossuficiente, pode ter até 64 KB e contém várias informações de acordo com um esquema definido pela Grade de Eventos:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]
Campo Descrição
topic O caminho do recurso completo para a origem do evento. A Grade de Eventos fornece esse valor.
subject Caminho definido pelo publicador para o assunto do evento.
id O identificador exclusivo do evento.
eventType Um dos tipos de evento registrados para a origem do evento. Você pode criar filtros em relação a esse valor, por exemplo, CustomerCreated, BlobDeleted, HttpRequestReceived etc.
eventTime A hora em que o evento foi gerado com base na hora UTC do provedor.
data Informações específicas que são relevantes para o tipo de evento. Por exemplo, um evento sobre um novo arquivo que está sendo criado no Armazenamento do Azure traz detalhes sobre o arquivo, como o valor lastTimeModified. Ou um evento dos Hubs de Eventos tem a URL do arquivo de Captura. Esse campo é opcional.
dataVersion A versão do esquema do objeto de dados. O publicador define a versão do esquema.
metadataVersion A versão do esquema dos metadados do evento. Grade de Eventos define o esquema de propriedades de nível superior. A Grade de Eventos fornece esse valor.

Dica

A Grade de Eventos envia um evento para indicar que algo ocorreu ou foi alterado. No entanto, o objeto real que foi alterado não faz parte dos dados do evento. Em vez disso, uma URL ou um identificador geralmente é passado para referenciar o objeto alterado.

O que é a origem do evento?

As origens do evento são responsáveis por enviar eventos para a Grade de Eventos. Cada origem do evento está relacionada a um ou mais tipos de evento. Por exemplo, o Armazenamento do Azure é a origem dos eventos criados pelo blob. O Hub IoT é a origem do evento para os eventos criados pelo dispositivo. Seu aplicativo é a origem dos eventos personalizados definidos. Vamos examinar as origens do evento mais detalhadamente daqui a pouco.

A Grade de Eventos do Azure tem o conceito de um publicador de eventos que é frequentemente confundido com a origem do evento. Um publicador de eventos é o usuário ou a organização que decide enviar eventos para a Grade de Eventos. Por exemplo, a Microsoft publica eventos para vários serviços do Azure. Você pode publicar eventos em seu próprio aplicativo. As organizações que hospedam serviços fora do Azure podem publicar eventos por meio da Grade de Eventos. A origem do evento é o serviço específico que gera o evento para esse publicador. Embora os dois termos sejam ligeiramente diferentes, para os fins desta unidade, vamos usar "publicador" e "origem do evento" de forma intercambiável para representar a entidade que envia a mensagem para a Grade de Eventos.

O que é um tópico de eventos?

Os tópicos de eventos categorizam eventos em grupos. Os tópicos são representados por um ponto de extremidade público e estão no local ao qual a origem do evento envia eventos. Ao projetar seu aplicativo, você pode decidir quantos tópicos criar. As soluções maiores criarão um tópico personalizado para cada categoria de eventos relacionados, enquanto as soluções menores podem enviar todos os eventos para um único tópico. Por exemplo, considere um aplicativo que envia eventos relacionados à modificação de contas de usuário e ordens de processamento. É improvável que qualquer manipulador de eventos queira ambas as categorias de eventos. Crie dois tópicos personalizados e permita que os manipuladores de eventos assinem o que for interessante para eles. Os assinantes de eventos podem filtrar os tipos de evento que desejam de um tópico específico.

Os tópicos são divididos em tópicos do sistema e tópicos personalizados.

Tópicos do sistema

Os tópicos do sistema são tópicos internos fornecidos pelos serviços do Azure. Você não vê os tópicos do sistema em sua assinatura do Azure porque o publicador é o proprietário dos tópicos, mas você pode assiná-los. Para assinar, forneça informações sobre o recurso do qual deseja receber eventos. Desde que você tenha acesso ao recurso, poderá assinar seus eventos.

Tópicos personalizados

Os tópicos personalizados são tópicos de aplicativo e de terceiros. Ao criar ou receber acesso a um tópico personalizado, você verá o tópico personalizado em sua assinatura.

O que é um assinante de eventos?

As Assinaturas de Eventos definem quais eventos em um tópico um manipulador de eventos deseja receber. Uma assinatura também pode filtrar eventos por tipo ou assunto, de modo que você possa garantir que um manipulador de eventos receba apenas eventos relevantes.

O que é um manipulador de eventos?

Um manipulador de eventos (às vezes, chamado de "assinante" de eventos) é qualquer componente (aplicativo ou recurso) que pode receber eventos da Grade de Eventos. Por exemplo, o Azure Functions pode executar um código em resposta à nova música que está sendo adicionada à conta de Armazenamento de Blobs. Os assinantes podem decidir com quais eventos desejam lidar e a Grade de Eventos notificará com eficiência cada assinante interessado quando um novo evento estiver disponível, sem sondagem obrigatória.

Tipos de origens do evento

Os seguintes tipos de recursos do Azure podem gerar eventos:

Serviços do Azure que dão suporte a tópicos do sistema

Confira alguns serviços de Azure que dão suporte a tópicos do sistema. Para obter a lista completa de serviços do Azure que dão suporte a tópicos do sistema, confira Tópicos do sistema em Grade de Eventos do Azure.

  • Assinaturas e Grupos de Recursos do Azure: as assinaturas e os grupos de recursos geram eventos relacionados às operações de gerenciamento no Azure. Por exemplo, quando um usuário cria uma máquina virtual, essa origem gera um evento.
  • Registro de contêiner: o serviço Registro de Contêiner do Azure gera eventos quando imagens no registro são adicionadas, removidas ou alteradas.
  • Hubs de Eventos: os Hubs de Eventos podem ser usados para processar e armazenar eventos de uma série de fontes de dados, normalmente relacionados a log ou telemetria. Os Hubs de Eventos podem gerar eventos para a Grade de Eventos quando arquivos são capturados.
  • Barramento de Serviço: o Barramento de Serviço pode gerar eventos para a Grade de Eventos quando há mensagens ativas sem nenhum ouvinte ativo.
  • Contas de armazenamento: as contas de armazenamento podem gerar eventos quando os usuários adicionam blobs, arquivos, entradas de tabela ou mensagens de fila. Use contas de blobs e contas de Uso Geral V2 como origens do evento.
  • Serviços de Mídia: os Serviços de Mídia hospedam a mídia de áudio e vídeo e fornecem recursos avançados de gerenciamento para arquivos de mídia. Os Serviços de Mídia podem gerar eventos quando um trabalho de codificação é iniciado ou concluído em um arquivo de vídeo.
  • Hub IoT do Azure: o Hub IoT comunica-se com dispositivos de IoT e coleta a telemetria deles. Ele pode gerar eventos sempre que esses tipos de comunicação são recebidos.

Para obter mais informações, confira os Tópicos do sistema na Grade de Eventos do Azure.

Tópicos personalizados

Você pode gerar eventos personalizados usando a API REST ou o SDK do Azure em Java, GO, .NET, Node, Python e Ruby. Por exemplo, é possível criar um evento personalizado no recurso Aplicativos Web do Serviço de Aplicativo do Azure. Isso pode acontecer na função de trabalho, quando ela recebe uma mensagem de uma fila de armazenamento.

Essa ampla integração com diferentes origens do evento no Azure garante que as Grades de Eventos possam distribuir eventos relacionados a quase todos os recursos do Azure.

Manipuladores de eventos

Os seguintes tipos de objeto no Azure podem receber e manipular eventos da Grade de Eventos:

  • Azure Functions: código personalizado executado no Azure, sem a necessidade de configuração explícita de contêiner ou servidor virtual do host. Use uma função do Azure como um manipulador de eventos quando desejar codificar uma resposta personalizada para o evento.
  • Aplicativos Lógicos do Azure: use os Aplicativos Lógicos para implementar processos de negócios para processar eventos da Grade de Eventos. Você não cria um webhook explicitamente neste cenário. O webhook é criado para você automaticamente quando você configura o aplicativo lógico para manipular eventos da Grade de Eventos.
  • Webhooks: um webhook é uma API Web que implementa uma arquitetura de push. Você também pode processar eventos usando os runbooks da Automação do Azure. Os webhooks dão suporte ao processamento de eventos usando runbooks automatizados. Você cria um webhook para o runbook e, em seguida, usa o manipulador de webhook.
  • Hubs de Eventos: use os Hubs de Eventos quando sua solução receber eventos da Grade de Eventos mais rápido do que pode processá-los. Quando os eventos estiverem em um hub de eventos, seu aplicativo poderá processar a partir do hub de eventos em seu próprio agendamento.
  • Barramento de Serviço: você pode usar uma fila ou um tópico de serviço como um manipulador de eventos da Grade de Eventos.
  • Filas de armazenamento: use o Armazenamento de Filas para receber eventos que precisam ser recebidos. Você pode usar o Armazenamento de Filas quando tem um processo de execução longa que demora muito para responder. Ao enviar eventos para o Armazenamento de Filas, o aplicativo pode receber e processar os eventos de acordo com a própria agenda.
  • Microsoft Power Automate: o Power Automate também hospeda fluxos de trabalho, mas é mais fácil para as equipes não técnicas usarem.

Para obter mais informações, confira Manipuladores de Eventos.

Você deve usar a Grade de Eventos?

Use a Grade de Eventos quando precisar destes recursos:

  • Simplicidade: é muito fácil conectar fontes a assinantes na Grade de Eventos.
  • Filtragem avançada: as assinaturas têm um controle rígido dos eventos recebidos de um tópico.
  • Fan-out: você pode assinar um número ilimitado de pontos de extremidade nos mesmos eventos e tópicos.
  • Confiabilidade: a Grade de Eventos repete a entrega de eventos por até 24 horas para cada assinatura.
  • Pagamento por evento: pague apenas pelo número de eventos transmitidos.

A Grade de Eventos é um sistema de distribuição de eventos simples, mas versátil. Use-a para fornecer eventos individuais aos assinantes, que os receberão de forma rápida e confiável. Temos mais um modelo de sistema de mensagens a ser examinado; e se quisermos entregar um grande fluxo de eventos? Nesse cenário, a Grade de Eventos não é uma boa solução porque ela foi projetada para a entrega de um evento por vez. Nesse caso, é necessário escolher outro serviço do Azure: os Hubs de Eventos.