Grade de Eventos e confiabilidade
A Grade de Eventos do Azure permite compilar facilmente aplicativos com arquiteturas baseadas em evento. Essa solução tem suporte interno para eventos provenientes de serviços do Azure, como blobs de armazenamento e grupos de recursos. A Grade de Eventos também tem suporte para seus próprios eventos usando os 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 usar a Grade de Eventos cria uma carga de trabalho mais confiável, consulte Recuperação de desastre geográfica do lado do servidor na Grade de Eventos do Azure.
As seguintes seções são específicas para a Grade de Eventos do Azure e confiabilidade:
- Considerações sobre o design
- Lista de verificação da configuração
- Opções de configuração recomendadas
- Artefatos de origem
Considerações sobre o 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 da Grade de Eventos por região, no caso de uma solução do Azure de várias regiões.
- Monitore a Grade de Eventos para observar a entrega de eventos com falha.
- 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 observar a publicação de eventos com falha.
Recomendações de configuração
Considere as seguintes recomendações para otimizar a confiabilidade ao configurar a Grade de Eventos do Azure:
Recomendação | Descrição |
---|---|
Monitore a Grade de Eventos para observar a entrega de eventos com falha. | A métrica Delivery Failed aumentará sempre que uma mensagem não puder ser entregue a um manipulador de eventos (tempo limite ou um código de status não 200-204 HTTP ). Se um evento não puder ser perdido, configure uma conta de armazenamento DLQ (Fila de Mensagens Mortas). Uma conta DLQ é o local onde os eventos que não podem ser entregues após a contagem máxima de novas tentativas serão colocados. Opcionalmente, implemente um sistema de notificação na conta de armazenamento DLQ, por exemplo, manipulando um evento de novo 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 matriz json com vários eventos para os assinantes, em vez de 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 da mensagem for grande, apenas uma ou algumas mensagens caberão no lote. O serviço de consumo precisará processar mais lotes de eventos. Se a carga do evento for grande, considere armazená-lo em outro lugar, como o armazenamento de blobs, e transmitir uma referência no evento. Em integrações com serviços de terceiros por meio do esquema CloudEvents, não é recomendável exceder 64KB de 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 e do volume da mensagem. |
Monitore a Grade de Eventos para observar a publicação de eventos com falha. | A métrica Unmatched mostrará mensagens publicadas, mas não correspondentes a nenhuma assinatura. Dependendo da arquitetura do aplicativo, a última pode ser intencional. |
Artefatos de origem
Para determinar o tipo de Esquema de Entrada para todos os tópicos disponíveis da Grade de Eventos, 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 da 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 de Acesso à Rede Pública para todos os domínios da 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 da 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 disponíveis da Grade de Eventos, use o seguinte esquema:
Resources
| where type == 'microsoft.eventgrid/domains'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']
Para identificar o status de Acesso à Rede Pública para todos os tópicos disponíveis da Grade de Eventos, use a seguinte consulta:
Resources
| where type == 'microsoft.eventgrid/topics'
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']