Compartir a través de


Event Grid y la confiabilidad

Azure Event Grid le permite crear fácilmente aplicaciones con arquitecturas basadas en eventos. Esta solución tiene compatibilidad integrada para eventos procedentes de los servicios de Azure, como los blobs de almacenamiento y los grupos de recursos. Event Grid también tiene compatibilidad para sus propios eventos mediante temas personalizados.

Para obtener más información sobre el uso de Event Grid, consulte Creación y enrutamiento de eventos personalizados con Azure Event Grid.

Para comprender de qué manera el uso de Event Grid crea una carga de trabajo más confiable, consulte Recuperación ante desastres geográfica del servidor en Azure Event Grid.

Las secciones siguientes son específicas para Azure Event Grid y la confiabilidad:

  • Consideraciones de diseño
  • Lista de comprobación de la configuración
  • Opciones de configuración recomendada
  • Artefactos de origen

Consideraciones de diseño

Azure Event Grid ofrece un contrato de nivel de servicio de tiempo de actividad. Para obtener más información, consulte SLA para Event Grid.

Lista de comprobación

¿Ha configurado Azure Event Grid teniendo en cuenta la confiabilidad?

  • Implemente una instancia de Event Grid por región, en caso de tener una solución de Azure de varias regiones.
  • Supervise Event Grid en busca de entregas de eventos con errores.
  • Use eventos por lotes.
  • Los lotes de eventos no pueden tener un tamaño de más de 1MB.
  • Configure y optimice la selección del tamaño de lote durante las pruebas de carga.
  • Asegúrese de que los mensajes de Event Grid se aceptan con respuestas HTTP200-204 solo si se entregan a un punto de conexión que contiene código personalizado.
  • Supervise Event Grid en busca de publicaciones de eventos con errores.

Recomendaciones para la configuración

Tenga en cuenta las siguientes recomendaciones para optimizar la confiabilidad al configurar Azure Event Grid:

Recomendación Descripción
Supervise Event Grid en busca de entregas de eventos con errores. La métrica Delivery Failed aumentará cada vez que no se pueda entregar un mensaje a un controlador de eventos (tiempo de espera agotado o un código de estado distinto de 200-204 HTTP). Si no se puede perder un evento, configure una cuenta de almacenamiento de cola de mensajes fallidos (DLQ). Una cuenta de DLQ es donde se colocarán los eventos que no se puedan entregar después del número máximo de reintentos. De manera opcional, implemente un sistema de notificación en la cuenta de almacenamiento de DLQ, por ejemplo, controlando un evento de nuevo archivo a través de Event Grid.
Use eventos por lotes en escenarios de alto rendimiento. El servicio entregará una matriz json con varios eventos a los suscriptores, en lugar de una matriz con un evento. La aplicación de consumo debe ser capaz de procesar estas matrices.
Los lotes de eventos no pueden tener un tamaño de más de 1MB. Si la carga de mensajes es grande, solo cabrán uno o unos pocos mensajes en el lote. El servicio de consumo deberá procesar más lotes de eventos. Si el evento tiene una carga grande, considere la posibilidad de almacenarlo en otro lugar, como en Blob Storage, y pasar una referencia en el evento. Al integrar en servicios de terceros a través del esquema CloudEvents, no se recomienda superar eventos de 64KB.
Configure y optimice la selección del tamaño de lote durante las pruebas de carga. La selección del tamaño del lote depende del tamaño de carga y del volumen de mensajes.
Supervise Event Grid en busca de publicaciones de eventos con errores. La métrica Unmatched mostrará los mensajes que se publican, pero que no coinciden con ninguna suscripción. Según la arquitectura de la aplicación, esto último puede ser intencionado.

Artefactos de origen

Para determinar el tipo de esquema de entrada para todos los temas de Event Grid disponibles, use la consulta siguiente:

Resources 
| where type == 'microsoft.eventgrid/topics'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']

Para recuperar el identificador de recurso de los puntos de conexión privados existentes para dominios de Event Grid, use la consulta siguiente:

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 el estado de acceso a la red pública para todos los dominios de Event Grid disponibles, use la consulta siguiente:

Resources 
| where type == 'microsoft.eventgrid/domains' 
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']

Para identificar las reglas de firewall para todos los dominios de Event Grid públicos, use la consulta siguiente:

Resources 
| where type == 'microsoft.eventgrid/domains' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']

Para identificar las reglas de firewall para todos los temas de Event Grid públicos, use la consulta siguiente:

Resources 
| where type == 'microsoft.eventgrid/topics' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']

Para recuperar el identificador de recurso de los puntos de conexión privados existentes para temas de Event Grid, use la consulta siguiente:

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 el tipo de esquema de entrada para todos los dominios de Event Grid disponibles, use la consulta siguiente:

Resources 
| where type == 'microsoft.eventgrid/domains'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']

Para identificar el estado de acceso a la red pública para todos los temas de Event Grid disponibles, use la consulta siguiente:

Resources 
| where type == 'microsoft.eventgrid/topics' 
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']

Paso siguiente