Freigeben über


Event Grid und Zuverlässigkeit

Mit Azure Event Grid können Sie mühelos Anwendungen mit ereignisbasierten Architekturen erstellen. Diese Lösung verfügt über integrierte Unterstützung für Ereignisse, die aus Azure-Diensten stammen, wie Speicherblobs und Ressourcengruppen. Event Grid bietet auch Unterstützung für Ihre eigenen Ereignisse mit benutzerdefinierten Themen.

Mehr Informationen über die Verwendung von Event Grid finden Sie unter Erstellen und Weiterleiten benutzerdefinierter Ereignisse mit Azure Event Grid.

Weitere Informationen dazu, wie Event Grid für eine zuverlässigere Workload sorgt, finden Sie unter Serverseitige georedundante Notfallwiederherstellung in Azure Event Grid.

Die folgenden Abschnitte gelten speziell für Azure Event Grid und die Zuverlässigkeit:

  • Überlegungen zum Entwurf
  • Prüfliste für die Konfiguration
  • Empfohlene Konfigurationsoptionen
  • Quellartefakte

Überlegungen zum Entwurf

Azure Event Grid bietet eine Uptime-SLA. Weitere Informationen finden Sie unter der SLA für Event Grid.

Checkliste

Haben Sie Azure Event Grid unter Berücksichtigung der Zuverlässigkeit konfiguriert?

  • Stellen Sie Event Grid-Instanz pro Region bereit, falls es sich um eine regionsübergreifende Azure-Lösung handelt.
  • Überwachen Sie Event Grid auf fehlgeschlagene Ereignisbereitstellung.
  • Verwenden Sie Batchereignisse.
  • Die Größe von Ereignisbatches darf 1MB nicht überschreiten.
  • Konfigurieren und optimieren Sie die Auswahl der Batchgröße während des Auslastungstests.
  • Stellen Sie sicher, dass Ereignisrasternachrichten nur dann mit HTTP 200-204 Antworten akzeptiert werden, wenn sie an einen Endpunkt gesendet werden, der benutzerdefinierten Code enthält.
  • Überwachen Sie Event Grid auf fehlgeschlagene Ereignisveröffentlichungen.

Konfigurationsempfehlungen

Beachten Sie beim Konfigurieren von Azure Event Grid die folgenden Empfehlungen zur Optimierung der Zuverlässigkeit:

Empfehlung Beschreibung
Überwachen Sie Event Grid auf fehlgeschlagene Ereignisbereitstellung. Die Metrik Delivery Failed wird jedes Mal erhöht, wenn eine Nachricht nicht an einen Ereignishandler übermittelt werden kann (Timeout oder anderer Statuscode als 200-204 HTTP). Wenn ein Ereignis nicht verloren gehen darf, richten Sie ein DLQ-Speicherkonto (Dead-Letter-Queue) für nicht zustellbare Nachrichten ein. In einem DLQ-Konto werden Ereignisse gespeichert, die nach der maximalen Anzahl der Wiederholungsversuche nicht übermittelt werden können. Sie können optional ein Benachrichtigungssystem für das DLQ-Speicherkonto implementieren, indem Sie beispielsweise ein new file-Ereignis über Event Grid verarbeiten.
Verwenden Sie Batchereignisse in Szenarios mit hohem Durchsatz. Der Dienst übermittelt ein json-Array mit mehreren Ereignissen an die Abonnenten, anstatt ein Array mit einem Ereignis. Die Zielanwendung muss in der Lage sein, diese Arrays zu verarbeiten.
Die Größe von Ereignisbatches darf 1MB nicht überschreiten. Wenn die Nachricht viele Nutzdaten beinhaltet, passen nur eine oder wenige Nachrichten in den Batch. Der Zieldienst muss dann mehr Ereignisbatches verarbeiten. Wenn Ihr Ereignis über viele Nutzdaten verfügt, sollten Sie es an anderer Stelle speichern, beispielsweise in einem Blobspeicher, und einen Verweis im Ereignis übergeben. Bei der Integration in Drittanbieterdienste über das CloudEvents-Schema wird nicht empfohlen, eine Ereignisgröße von mehr als 64KB zu überschreiten.
Konfigurieren und optimieren Sie die Auswahl der Batchgröße während des Auslastungstests. Die Auswahl der Batchgröße hängt von der Nutzdatengröße und dem Nachrichtenvolumen ab.
Überwachen Sie Event Grid auf fehlgeschlagene Ereignisveröffentlichungen. Die Metrik Unmatched zeigt Nachrichten an, die veröffentlicht, aber keinem Abonnement zugeordnet sind. Je nach Ihrer Anwendungsarchitektur kann Letzteres beabsichtigt sein.

Quellartefakte

Verwenden Sie die folgende Abfrage, um den Typ des Eingabeschemas für alle verfügbaren Event Grid-Themen zu bestimmen:

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

Verwenden Sie die folgende Abfrage, um die Ressourcen-ID vorhandener privater Endpunkte für Event Grid-Domänen abzurufen:

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']

Verwenden Sie die folgende Abfrage, um den Status des öffentlichen Netzwerkzugriffs für alle verfügbaren Event Grid-Domänen zu ermitteln:

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

Verwenden Sie die folgende Abfrage, um Firewallregeln für alle öffentlichen Event Grid-Domänen zu ermitteln:

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

Verwenden Sie die folgende Abfrage, um Firewallregeln für alle öffentlichen Event Grid-Themen zu ermitteln:

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

Verwenden Sie die folgende Abfrage, um die Ressourcen-ID vorhandener privater Endpunkte für Event Grid-Themen abzurufen:

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']

Verwenden Sie das folgende Schema, um den Typ des Eingabeschemas für alle verfügbaren Event Grid-Domänen zu bestimmen:

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

Verwenden Sie die folgende Abfrage, um den Status des öffentlichen Netzwerkzugriffs für alle verfügbaren Event Grid-Themen zu ermitteln:

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

Nächster Schritt