Freigeben über


Azure Well-Architected Framework-Perspektive auf Azure Event Hubs

Azure Event Hubs ist ein skalierbarer Ereignisverarbeitungsdienst, der große Mengen von Ereignissen und Daten mit kurzer Wartezeit und hoher Zuverlässigkeit erfasst und verarbeitet. Mit diesem Dienst können Millionen von Ereignissen pro Sekunde empfangen und verarbeitet werden. An einen Event Hub gesendete Daten können transformiert und mit einem beliebigen Echtzeitanalyseanbieter oder Batchverarbeitungs- und Speicheradapter gespeichert werden.

Weitere Informationen zur Verwendung von Event Hubs finden Sie in der Azure Event Hubs-Dokumentation. Dort erfahren Sie, wie Sie mithilfe von Event Hubs Millionen von Ereignissen pro Sekunde von verbundenen Geräten und Anwendungen erfassen.

Wenn Sie die Möglichkeiten der Verwendung von Event Hubs verstehen möchten, können Sie operative Exzellenz und Zuverlässigkeit für Ihre Arbeitsauslastung erreichen, indem Sie die folgenden Artikel lesen:

Die folgenden Abschnitte sind spezifisch für Azure Event Hubs aus Sicht von Well Architected Framework:

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

Überlegungen zum Entwurf

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

Checkliste

Haben Sie Azure Event Hubs unter Berücksichtigung erstklassiger Betriebsprozesse konfiguriert?

  • Erstellen Sie Richtlinien vom Typ „SendOnly“ und „ListenOnly“ für den Ereignisherausgeber bzw. -consumer.
  • Wenn Sie das SDK zum Senden von Ereignissen an Event Hubs verwenden, stellen Sie sicher, dass die von der Wiederholungsrichtlinie ausgelösten Ausnahmen (EventHubsException oder OperationCancelledException) ordnungsgemäß erfasst werden.
  • Verwenden Sie Batchereignisse in Szenarien mit hohem Durchsatz.
  • Jeder Consumer kann Ereignisse von einer bis zu maximalen Partitionen lesen, die von der Event Hubs-SKU unterstützt werden.
  • Verwenden Sie beim Entwickeln neuer Anwendungen EventProcessorClient (.NET und Java) oder EventHubConsumerClient (Python und JavaScript) als Client-SDK.
  • Ziehen Sie im Rahmen Ihrer lösungsweiten Strategie für Verfügbarkeit und Notfallwiederherstellung die Aktivierung der Option für georedundante Notfallwiederherstellung in Event Hubs in Betracht.
  • Wenn eine Lösung über eine große Anzahl unabhängiger Ereignisherausgeber verfügt, erwägen Sie die Verwendung von Ereignisherausgebern für eine differenzierte Zugriffssteuerung.
  • Veröffentlichen Sie keine Ereignisse auf einer bestimmten Partition.
  • Wenn Sie häufig Ereignisse veröffentlichen, verwenden Sie nach Möglichkeit das AMQP-Protokoll.
  • Die Anzahl von Partitionen spiegelt den Grad der Downstreamparallelität wider, den Sie erreichen können.
  • Stellen Sie sicher, dass jede verarbeitende Anwendung eine separate Consumergruppe verwendet und nur ein aktiver Empfänger pro Consumergruppe vorhanden ist.
  • Gehen Sie bei Verwendung des Erfassungsfeatures beim Konfigurieren des Zeitfensters und der Dateigröße sorgfältig vor, insbesondere bei geringen Ereignismengen.

Konfigurationsempfehlungen

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

Empfehlung Beschreibung
Wenn Sie das SDK zum Senden von Ereignissen an Event Hubs verwenden, stellen Sie sicher, dass die von der Wiederholungsrichtlinie ausgelösten Ausnahmen (EventHubsException oder OperationCancelledException) ordnungsgemäß erfasst werden. Stellen Sie bei Verwendung von HTTPS sicher, dass ein ordnungsgemäßes Wiederholungsmuster implementiert ist.
Verwenden Sie Batchereignisse in Szenarien mit hohem Durchsatz. Der Dienst übermittelt ein json-Array mit mehreren Ereignissen an die Abonnenten, anstatt ein Array mit einem Ereignis. Die verarbeitende Anwendung muss in der Lage sein, diese Arrays zu verarbeiten.
Jeder Consumer kann Ereignisse von einer bis zu maximalen Partitionen lesen, die von der Event Hubs-SKU unterstützt werden. Um eine maximale Skalierung aufseiten der verarbeitenden Anwendung zu erreichen, sollte jeder Consumer aus einer einzelnen Partition lesen.
Verwenden Sie beim Entwickeln neuer Anwendungen EventProcessorClient (.NET und Java) oder EventHubConsumerClient (Python und JavaScript) als Client-SDK. EventProcessorHost ist veraltet.
Ziehen Sie im Rahmen Ihrer lösungsweiten Strategie für Verfügbarkeit und Notfallwiederherstellung die Aktivierung der Option für georedundante Notfallwiederherstellung in Event Hubs in Betracht. Diese Option ermöglicht die Erstellung eines sekundären Namespace in einer anderen Region. Nur der aktive Namespace empfängt jederzeit Nachrichten. Nachrichten und Ereignisse werden nicht in der sekundären Region repliziert. Die RTO für das regionale Failover beträgt bis zu 30 Minuten. Vergewissern Sie sich, dass diese RTO den Anforderungen des Kunden entspricht und zur allgemeinen Verfügbarkeitsstrategie passt. Wenn eine höhere RTO erforderlich ist, sollten Sie ein clientseitiges Failovermuster implementieren.
Wenn eine Lösung über eine große Anzahl unabhängiger Ereignisherausgeber verfügt, erwägen Sie die Verwendung von Ereignisherausgebern für eine differenzierte Zugriffssteuerung. Ereignisherausgeber legen den Partitionsschlüssel automatisch auf den Herausgebernamen fest. Daher sollte dieses Feature nur verwendet werden, wenn die Ereignisse gleichmäßig von allen Herausgebern stammen.
Veröffentlichen Sie keine Ereignisse auf einer bestimmten Partition. Wenn das Sortieren der Ereignisse wichtig ist, implementieren Sie die Downstreamsortierung, oder verwenden Sie stattdessen einen anderen Messagingdienst.
Wenn Sie häufig Ereignisse veröffentlichen, verwenden Sie nach Möglichkeit das AMQP-Protokoll. AMQP weist höhere Netzwerkkosten beim Initialisieren der Sitzung auf, HTTPS erfordert jedoch TLS-Mehraufwand für jede Anforderung. AMQP verfügt über eine höhere Leistung für häufige Herausgeber.
Die Anzahl von Partitionen spiegelt den Grad der Downstreamparallelität wider, den Sie erreichen können. Verwenden Sie für den maximalen Durchsatz die maximale Anzahl von Partitionen, die von der SKU beim Erstellen des Event Hub unterstützt werden. Wenn Sie die Anzahl der Partitionen erhöhen, können Sie gleichzeitige Verarbeitungsentitäten so skalieren, dass sie mit den Partitionen übereinstimmen, um eine optimale Verfügbarkeit von Sende- und Empfangsvorgängen sicherzustellen.
Gehen Sie bei Verwendung des Erfassungsfeatures beim Konfigurieren des Zeitfensters und der Dateigröße sorgfältig vor, insbesondere bei geringen Ereignismengen. Data Lake gen2 berechnet minimale Transaktionsgröße. Wenn Sie ein so kleines Zeitfenster festlegen, dass die Datei die Mindestgröße nicht erreicht hat, entstehen zusätzliche Kosten.

Quellartefakte

Verwenden Sie die folgende Abfrage, um Event Hubs-Namespaces mit der SKU Basic zu ermitteln:

Resources 
| where type == 'microsoft.eventhub/namespaces'
| where sku.name == 'Basic'
| project resourceGroup, name, sku.name

Nächster Schritt