Escolher o Azure Event Grid
Muitos aplicativos usam um modelo de publicação-assinatura para notificar os componentes distribuídos de que algo aconteceu ou que algum objeto mudou. Suponha que tem uma aplicação de partilha de música com uma API Web executada no Azure. Quando um utilizador carregar uma nova música, tem de notificar todas as aplicações móveis instaladas nos dispositivos dos utilizadores em todo o mundo que tenham interesse nesse género.
Nesta arquitetura, o editor de arquivos de som não precisa saber sobre nenhum dos assinantes interessados na música compartilhada. Além disso, queremos ter uma relação um-para-muitos, onde podemos ter vários subscritores que podem, opcionalmente, decidir se estão interessados nesta nova música. O Azure Event Grid é uma solução perfeita para este tipo de arquitetura.
O que é o Azure Event Grid?
A Grade de Eventos do Azure é um serviço de roteamento de eventos totalmente gerenciado executado sobre o Azure Service Fabric. O Event Grid distribui eventos a partir de diferentes origens, como contas de armazenamento de Blobs do Azure ou Serviços de Multimédia do Azure, para diferentes processadores, como as Funções do Azure ou Webhooks. O Event Grid foi criado para facilitar a criação de aplicações baseadas em eventos e sem servidor no Azure.
O Event Grid suporta a maioria dos serviços do Azure como um publicador ou subscritor e pode ser utilizado com serviços de terceiros. Ele oferece um sistema de mensagens dinamicamente dimensionável, de baixo custo e que permite aos editores notificarem os subscritores sobre uma alteração de estado. A ilustração seguinte mostra o Azure Event Grid a receber mensagens de várias origens e a distribuí-las para processadores de eventos com base na subscrição.
Existem diversos conceitos no Azure Event Grid que ligam uma origem a um subscritor:
- Eventos: o que aconteceu.
- Origens de eventos: onde o evento aconteceu.
- Tópicos: o ponto final no qual os publicadores enviam eventos.
- Subscrições de eventos: o ponto final ou o mecanismo incorporado para encaminhar eventos, por vezes, para vários processadores. Os manipuladores também usam assinaturas para filtrar eventos de entrada de forma inteligente.
- Processadores de eventos: a aplicação ou o serviço que reage ao evento.
A seguinte ilustração mostra um Azure Event Grid posicionado entre múltiplas origens de eventos e múltiplos processadores de eventos. As fontes de eventos enviam eventos para a Grade de Eventos e a Grade de Eventos encaminha eventos relevantes para os assinantes. A Grade de Eventos usa tópicos para decidir quais eventos enviar para quais manipuladores. As fontes de eventos marcam cada evento com um ou mais tópicos, e os manipuladores de eventos se inscrevem nos tópicos em que estão interessados.
O que é um evento?
Eventos são as mensagens de dados transmitidas através do Event Grid, que descrevem o que aconteceu. Cada evento é autónomo, pode ter até 64 KB e contém diversas informações com base num esquema definido pelo Event Grid:
[
{
"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 de recurso completo para a origem de evento. O Event Grid fornece este valor. |
subject | Caminho definido pelo publicador para o assunto do evento. |
id | O identificador exclusivo do evento. |
eventType | Um dos tipos de eventos registados para esta origem de evento. Você pode criar filtros em relação a esse valor, por exemplo, , CustomerCreated , , BlobDeleted HttpRequestReceived etc. |
eventTime | A hora a que o evento foi gerado com base no fuso horário UTC do fornecedor. |
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 tem detalhes sobre o arquivo, como o lastTimeModified valor. Ou, um evento dos Hubs de Eventos inclui o URL do ficheiro de Recolha. Este campo é opcional. |
dataVersion | 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. O Event Grid define o esquema das propriedades de nível superior. O Event Grid fornece este valor. |
Gorjeta
O Event Grid envia um evento para indicar que algo aconteceu ou mudou. No entanto, o objeto real que foi alterado não faz parte dos dados do evento. Em vez disso, um URL ou identificador é, muitas vezes, transmitido para fazer referência ao objeto alterado.
O que é uma origem de evento?
As origens de eventos são responsáveis pelo envio de eventos para o Event Grid. Cada origem de evento está relacionada com um ou mais tipos de evento. Por exemplo, o Armazenamento do Azure é a origem de evento para eventos criados por blobs. O Hub IoT é a origem de evento para eventos criados por dispositivos. A sua aplicação é a origem de evento para os eventos personalizados que definir. Vamos analisar as origens de eventos mais detalhadamente daqui a pouco.
A Grade de Eventos do Azure tem o conceito de um editor de eventos que muitas vezes é confundido com a fonte do evento. Um editor de eventos é o usuário ou organização que decide enviar eventos para a Grade de Eventos. Por exemplo, a Microsoft publica eventos para vários serviços do Azure. Pode publicar eventos a partir da sua própria aplicação. As organizações que alojam serviços fora do Azure podem publicar eventos através do Event Grid. A origem do evento é o serviço específico que gera o evento para esse editor. Embora os dois termos sejam ligeiramente diferentes, para os fins desta unidade, usaremos "editor" e "fonte de evento" indistintamente para representar a entidade que envia a mensagem para a Grade de Eventos.
O que é um tópico de evento?
Os tópicos de eventos categorizam eventos em grupos. Os tópicos são representados por um ponto final público e estão no local para o qual a origem de evento envia eventos. Ao conceber a sua aplicação, pode decidir quantos tópicos criar. As soluções maiores irão criar um tópico personalizado para cada categoria de eventos relacionados, enquanto as soluções mais pequenas poderão enviar todos os eventos para um único tópico. Por exemplo, considere uma aplicação que envia eventos relacionados com a modificação de contas de utilizador e com o processamento de encomendas. É pouco provável que qualquer processador de eventos queira as duas categorias de eventos. Crie dois tópicos personalizados e deixe que os processadores de eventos subscrevam aquele que for do seu interesse. Os subscritores de eventos podem filtrar pelos tipos de eventos que querem a partir de um tópico específico.
Os tópicos estão divididos em tópicos de sistema e tópicos personalizados.
Tópicos de sistema
Tópicos de sistema são tópicos incorporados fornecidos pelos serviços do Azure. Não vê tópicos de sistema na sua subscrição do Azure porque o publicador é o proprietário dos tópicos, mas pode subscrevê-los. Para se inscrever, forneça informações sobre o recurso do qual você deseja receber eventos. Desde que tenha acesso ao recurso, pode subscrever os respetivos eventos.
Tópicos personalizados
Tópicos personalizados são tópicos de terceiros e da aplicação. Quando cria ou lhe é atribuído acesso a um tópico personalizado, verá esse tópico personalizado na sua subscrição.
O que é uma subscrição de evento?
As Subscrições de Eventos definem quais os eventos sobre um tópico um processador de eventos pretende receber. Uma subscrição também pode filtrar eventos por tipo ou assunto, para garantir que um processador de eventos recebe apenas eventos relevantes.
O que é um processador de eventos?
Um processador de eventos (por vezes referido como um "subscritor" de eventos) é qualquer componente (aplicação ou recurso) que pode receber eventos do Event Grid. Por exemplo, as Funções do Azure podem executar o código em resposta à nova música que está a ser adicionada à conta de armazenamento de Blobs. Os subscritores podem decidir quais os eventos que pretendem realizar e a Grelha de Eventos notificará eficientemente cada subscritor interessado quando um novo evento estiver disponível; não é necessária votação.
Tipos de origens de eventos
Os seguintes tipos de recursos do Azure podem gerar eventos:
Serviços do Azure que suportam tópicos do sistema
Aqui estão alguns serviços do Azure que dão suporte a tópicos do sistema. Para obter a lista completa dos serviços do Azure que dão suporte a tópicos do sistema, consulte Tópicos do sistema na Grade de Eventos do Azure.
- Subscrições e Grupos de Recursos do Azure: as subscrições e grupos de recursos geram eventos relacionados com operações de gestão no Azure. Por exemplo, quando um utilizador cria uma máquina virtual, esta origem gera um evento.
- Registo de contentor: o serviço Azure Container Registry gera eventos quando são adicionadas, removidas ou alteradas imagens no registo.
- Hubs de Eventos: os Hubs de Eventos podem ser usados para processar e armazenar eventos de várias fontes de dados, normalmente relacionados ao registro em log ou à telemetria. Os Hubs de Eventos podem gerar eventos para a Grade de Eventos quando os arquivos são capturados.
- Service Bus: o Service Bus pode gerar eventos para o Event Grid quando existem mensagens ativas sem serviços de escuta ativos.
- Contas de armazenamento: as contas de armazenamento podem gerar eventos quando os utilizadores adicionam blobs, ficheiros, entradas de tabela ou mensagens de fila. Pode utilizar contas de blobs e contas para fins gerais V2 como origens de eventos.
- Serviços de Multimédia: os Serviços de Multimédia alojam suporte de dados de vídeo e áudio e oferecem funcionalidades de gestão avançada para ficheiros de multimédia. Os Serviços de Multimédia podem gerar eventos quando uma tarefa de codificação é iniciada ou concluída num ficheiro de vídeo.
- Hub IoT do Azure: o Hub IoT comunica com, e recolhe, telemetria de dispositivos IoT. Pode gerar eventos sempre que receber essas comunicações.
Para obter mais informações, consulte Tópicos do sistema na Grade de Eventos do Azure.
Tópicos personalizados
Você pode gerar eventos personalizados usando a API REST ou com o SDK do Azure em Java, GO, .NET, Node, Python e Ruby. Por exemplo, pode criar um evento personalizado na funcionalidade Aplicações Web do Serviço de Aplicações do Azure. Isto pode ocorrer na função de trabalho, quando a mesma vai buscar uma mensagem de uma fila de armazenamento.
Esta integração profunda com diversas origens de eventos no Azure garante que o Event Grid pode distribuir eventos relacionados com quase qualquer recurso do Azure.
Processadores de eventos
Os seguintes tipos de objeto no Azure podem receber e lidar com eventos do Event Grid:
- Azure Functions: código personalizado que é executado no Azure, sem a necessidade de configuração explícita de um servidor virtual host ou contêiner. Utilize uma função do Azure como um processador de eventos quando pretende criar um código para uma resposta personalizada para o evento.
- Aplicativos Lógicos do Azure: use 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 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 push. Você também pode processar eventos usando runbooks de Automação do Azure. Webhooks suportam o processamento de eventos usando runbooks automatizados. Você cria um webhook para o runbook e, em seguida, usa o manipulador webhook.
- Hubs de Eventos: use Hubs de Eventos quando sua solução obtém eventos da Grade de Eventos mais rápido do que pode processar os eventos. Quando os eventos estiverem em um hub de eventos, seu aplicativo poderá processar eventos do hub de eventos em sua própria programação.
- Barramento de Serviço: Você pode usar uma fila ou tópico de serviço como um manipulador para eventos da Grade de Eventos.
- Filas de armazenamento: use o Armazenamento em Filas para receber eventos que precisam ser extraídos. Você pode usar o armazenamento em fila quando tiver um processo de execução longo que leva muito tempo para responder. Ao enviar eventos para o armazenamento em fila, o aplicativo pode extrair e processar eventos em sua própria agenda.
- Microsoft Power Automate: o Power Automate também hospeda fluxos de trabalho, mas é mais fácil de usar por funcionários não técnicos.
Para obter mais informações, consulte Manipuladores de eventos.
Deve utilizar o Event Grid?
Utilize o Event Grid quando precisar destas funcionalidades:
- Simplicidade: é simples conectar fontes a assinantes na Grade de Eventos.
- Filtros avançados: as subscrições têm um controlo apertado sobre os eventos que recebem de um tópico.
- Número de pontos finais: pode subscrever um número ilimitado de pontos finais para os mesmos eventos e tópicos.
- Fiabilidade: o Event Grid repete a entrega de eventos até 24 horas para cada subscrição.
- Pagamento por evento: pague apenas o número de eventos que transmite.
O Event Grid é um sistema de distribuição de eventos simples, mas versátil. Utilize-o para entregar eventos discretos para subscritores, que irão receber esses eventos de forma fiável e rápida. Temos mais um modelo de mensagens para examinar; E se quisermos realizar um grande fluxo de eventos? Neste cenário, o Event Grid não é uma solução ideal, porque foi criado para a entrega de um evento de cada vez. Em vez disso, devemos alterar para outro serviço do Azure: os Hubs de Eventos.