Grade de eventos e confiabilidade
A Grade de Eventos do Azure permite criar facilmente aplicativos com arquiteturas baseadas em eventos. Esta solução tem suporte interno para eventos provenientes dos serviços do Azure, como blobs de armazenamento e grupos de recursos. O Event Grid também tem suporte para os seus próprios eventos, através de tópicos personalizados.
Para obter mais informações sobre como usar a Grade de Eventos, consulte Criar e rotear eventos personalizados com a Grade de Eventos do Azure.
Para entender como o uso da Grade de Eventos cria uma carga de trabalho mais confiável, consulte a recuperação de desastres geográficos do lado do servidor na Grade de Eventos do Azure.
As seções a seguir são específicas para a Grade de Eventos do Azure e confiabilidade:
- Considerações de design
- Lista de verificação de configuração
- Opções de configuração recomendadas
- Artefatos de origem
Considerações de design
A Grade de Eventos do Azure fornece um SLA de tempo de atividade. Para obter mais informações, consulte SLA para Grade de Eventos.
Lista de Verificação
Você configurou a Grade de Eventos do Azure com a confiabilidade em mente?
- Implante uma instância de Grade de Eventos por região, no caso de uma solução do Azure com várias regiões.
- Monitore a Grade de Eventos para falha na entrega de eventos.
- Use eventos em lote.
- Os lotes de eventos não podem exceder
1MB
em tamanho. - Configure e otimize a seleção do tamanho do lote durante o teste de carga.
- Certifique-se de que as mensagens da Grade de Eventos sejam aceitas com
HTTP
200-204
respostas somente se forem entregues a um ponto de extremidade que contenha código personalizado. - Monitore a Grade de Eventos para falha na publicação de eventos.
Recomendações de configuração
Considere as seguintes recomendações para otimizar a confiabilidade ao configurar a Grade de Eventos do Azure:
Recomendação | Description |
---|---|
Monitore a Grade de Eventos para falha na entrega de eventos. | A Delivery Failed métrica aumentará sempre que uma mensagem não puder ser entregue a um manipulador de eventos (tempo limite ou um código de não-status200-204 HTTP ). Se um evento não puder ser perdido, configure uma conta de armazenamento DLQ (Dead-Letter-Queue). Uma conta DLQ é onde os eventos que não podem ser entregues após a contagem máxima de tentativas serão colocados. Opcionalmente, implemente um sistema de notificação na conta de armazenamento DLQ, por exemplo, manipulando um novo evento de arquivo por meio da Grade de Eventos. |
Use eventos em lote em cenários de alta taxa de transferência. | O serviço fornecerá uma json matriz com vários eventos para os assinantes, em vez de uma matriz com um evento. O aplicativo consumidor deve ser capaz de processar essas matrizes. |
Os lotes de eventos não podem exceder 1MB em tamanho. |
Se a carga útil da mensagem for grande, apenas uma ou algumas mensagens caberão no lote. O serviço consumidor precisará processar mais lotes de eventos. Se o seu evento tiver uma carga útil grande, considere armazená-la em outro lugar, como no armazenamento de blobs, e passar uma referência no evento. Ao integrar com serviços de terceiros por meio do esquema CloudEvents, não é recomendado exceder 64KB eventos. |
Configure e otimize a seleção do tamanho do lote durante o teste de carga. | A seleção do tamanho do lote depende do tamanho da carga útil e do volume da mensagem. |
Monitore a Grade de Eventos para falha na publicação de eventos. | A Unmatched métrica mostrará mensagens publicadas, mas que não correspondem a nenhuma assinatura. Dependendo da arquitetura do seu aplicativo, este último pode ser intencional. |
Artefatos de origem
Para determinar o tipo de esquema de entrada para todos os tópicos de grade de eventos disponíveis, use a seguinte consulta:
Resources
| where type == 'microsoft.eventgrid/topics'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']
Para recuperar a ID de recurso de pontos de extremidade privados existentes para domínios de grade de eventos, use a seguinte consulta:
Resources
| where type == 'microsoft.eventgrid/domains' and notnull(properties['privateEndpointConnections'])
| mvexpand properties['privateEndpointConnections']
| project-rename privateEndpointConnections = properties_privateEndpointConnections
| project name, resourceGroup, location, subscriptionId, privateEndpointConnections['properties']['privateEndpoint']['id']
Para identificar o status do Acesso à Rede Pública para todos os domínios de Grade de Eventos disponíveis, use a seguinte consulta:
Resources
| where type == 'microsoft.eventgrid/domains'
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']
Para identificar Regras de Firewall para todos os domínios públicos da Grade de Eventos, use a seguinte consulta:
Resources
| where type == 'microsoft.eventgrid/domains' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']
Para identificar Regras de Firewall para todos os tópicos públicos da Grade de Eventos, use a seguinte consulta:
Resources
| where type == 'microsoft.eventgrid/topics' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']
Para recuperar a ID de recurso de pontos de extremidade privados existentes para tópicos de grade de eventos, use a seguinte consulta:
Resources
| where type == 'microsoft.eventgrid/topics' and notnull(properties['privateEndpointConnections'])
| mvexpand properties['privateEndpointConnections']
| project-rename privateEndpointConnections = properties_privateEndpointConnections
| project name, resourceGroup, location, subscriptionId, privateEndpointConnections['properties']['privateEndpoint']['id']
Para determinar o tipo de esquema de entrada para todos os domínios de grade de eventos disponíveis, use o seguinte esquema:
Resources
| where type == 'microsoft.eventgrid/domains'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']
Para identificar o status do Acesso à Rede Pública para todos os tópicos de Grade de Eventos disponíveis, use a seguinte consulta:
Resources
| where type == 'microsoft.eventgrid/topics'
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']