Delen via


Azure Well-Architected Framework perspectief op Azure Event Hubs

Azure Event Hubs is een schaalbare service voor gebeurtenisverwerking die grote hoeveelheden gebeurtenissen en gegevens opneemt en verwerkt, met lage latentie en hoge betrouwbaarheid. Het kan miljoenen gebeurtenissen per seconde ontvangen en verwerken. Gegevens die naar een Event Hub worden verzonden, kunnen worden getransformeerd en opgeslagen met behulp van een realtime analyseprovider of batchverwerking en opslagadapters.

Raadpleeg de documentatie van Azure Event Hubs voor meer informatie over het gebruik van Event Hubs voor informatie over het gebruik van Event Hubs om miljoenen gebeurtenissen per seconde op te nemen van verbonden apparaten en toepassingen.

Raadpleeg de volgende artikelen om inzicht te krijgen in de manieren waarop Event Hubs u helpt operationele uitmuntendheid en betrouwbaarheid voor uw workload te bereiken:

De volgende secties zijn specifiek voor Azure Event Hubs vanuit het perspectief van een goed ontworpen framework:

  • Ontwerpoverwegingen
  • Controlelijst voor configuratie
  • Aanbevolen configuratieopties
  • Bronartefacten

Ontwerpoverwegingen

Azure Event Hubs biedt een SLA voor uptime. Raadpleeg de SLA voor Event Hubs voor meer informatie.

Checklijst

Hebt u Azure Event Hubs geconfigureerd met operationele uitmuntendheid in het achterhoofd?

  • Maak respectievelijk SendOnly- en ListenOnly-beleid voor de gebeurtenisuitgever en de consument.
  • Wanneer u de SDK gebruikt om gebeurtenissen naar Event Hubs te verzenden, moet u ervoor zorgen dat de uitzonderingen die worden gegenereerd door het beleid voor opnieuw proberen (EventHubsException of OperationCancelledException) correct worden afgevangen.
  • Gebruik in scenario's met hoge doorvoer batchgebeurtenissen.
  • Elke consument kan gebeurtenissen lezen van één tot maximumpartitie die wordt ondersteund door de Event Hubs-SKU
  • Wanneer u nieuwe toepassingen ontwikkelt, gebruikt EventProcessorClient u (.NET en Java) of EventHubConsumerClient (Python en JavaScript) als client-SDK.
  • Als onderdeel van uw oplossingsbrede beschikbaarheids- en herstelstrategie kunt u overwegen om de optie voor geo-herstel na noodgevallen van Event Hubs in te schakelen.
  • Wanneer een oplossing een groot aantal onafhankelijke gebeurtenisuitgevers heeft, kunt u overwegen gebeurtenisuitgevers te gebruiken voor gedetailleerd toegangsbeheer.
  • Publiceer geen gebeurtenissen naar een specifieke partitie.
  • Wanneer gebeurtenissen regelmatig worden gepubliceerd, gebruikt u indien mogelijk het AMQP-protocol.
  • Het aantal partities weerspiegelt de mate van downstreamparallelisme dat u kunt bereiken.
  • Zorg ervoor dat elke verbruikende toepassing gebruikmaakt van een afzonderlijke consumentengroep en dat er slechts één actieve ontvanger per consumentengroep aanwezig is.
  • Houd bij het gebruik van de functie Capture zorgvuldig rekening met de configuratie van het tijdvenster en de bestandsgrootte, met name bij lage gebeurtenisvolumes.

Aanbevelingen voor configuratie

Houd rekening met de volgende aanbevelingen om de betrouwbaarheid te optimaliseren bij het configureren van Azure Event Hubs:

Aanbeveling Beschrijving
Wanneer u de SDK gebruikt om gebeurtenissen naar Event Hubs te verzenden, moet u ervoor zorgen dat de uitzonderingen die worden gegenereerd door het beleid voor opnieuw proberen (EventHubsException of OperationCancelledException) correct worden afgevangen. Wanneer u dit gebruikt HTTPS, moet u ervoor zorgen dat een correct patroon voor opnieuw proberen wordt geïmplementeerd.
Gebruik in scenario's met hoge doorvoer batchgebeurtenissen. De service levert een json matrix met meerdere gebeurtenissen aan de abonnees, in plaats van een matrix met één gebeurtenis. De verbruikende toepassing moet deze matrices verwerken.
Elke consument kan gebeurtenissen lezen van één tot maximumpartitie die wordt ondersteund door de Event Hubs-SKU. Om maximale schaal aan de zijkant van de verbruikende toepassing te bereiken, moet elke consument lezen uit één partitie.
Wanneer u nieuwe toepassingen ontwikkelt, gebruikt EventProcessorClient u (.NET en Java) of EventHubConsumerClient (Python en JavaScript) als client-SDK. EventProcessorHost is afgeschaft.
Als onderdeel van uw oplossingsbrede beschikbaarheids- en herstelstrategie kunt u overwegen om de optie voor geo-herstel na noodgevallen van Event Hubs in te schakelen. Met deze optie kunt u een secundaire naamruimte in een andere regio maken. Alleen de actieve naamruimte ontvangt berichten op elk gewenst moment. Berichten en gebeurtenissen worden niet gerepliceerd naar de secundaire regio. De RTO voor de regionale failover duurt maximaal 30 minuten. Controleer of deze RTO overeenkomt met de vereisten van de klant en past in de bredere beschikbaarheidsstrategie. Als een hogere RTO is vereist, kunt u overwegen om een failoverpatroon aan de clientzijde te implementeren.
Wanneer een oplossing een groot aantal onafhankelijke gebeurtenisuitgevers heeft, kunt u overwegen gebeurtenisuitgevers te gebruiken voor gedetailleerd toegangsbeheer. Gebeurtenisuitgevers stellen de partitiesleutel automatisch in op de naam van de uitgever, dus deze functie mag alleen worden gebruikt als de gebeurtenissen gelijkmatig afkomstig zijn van alle uitgevers.
Publiceer geen gebeurtenissen naar een specifieke partitie. Als het bestellen van gebeurtenissen essentieel is, implementeert u het bestellen downstream of gebruikt u in plaats daarvan een andere berichtenservice.
Wanneer gebeurtenissen regelmatig worden gepubliceerd, gebruikt u indien mogelijk het AMQP-protocol. AMQP heeft hogere netwerkkosten bij het initialiseren van de sessie, maar HTTPS vereist TLS-overhead voor elke aanvraag. AMQP biedt betere prestaties voor regelmatige uitgevers.
Het aantal partities weerspiegelt de mate van downstreamparallelisme dat u kunt bereiken. Gebruik voor maximale doorvoer het maximum aantal partities dat door de SKU wordt ondersteund bij het maken van de Event Hub. Door het aantal partities te verhogen, kunt u gelijktijdige verwerkingsentiteiten schalen zodat deze overeenkomen met de partities, waardoor een optimale beschikbaarheid van verzenden en ontvangen wordt gegarandeerd.
Houd bij het gebruik van de functie Capture zorgvuldig rekening met de configuratie van het tijdvenster en de bestandsgrootte, met name bij lage gebeurtenisvolumes. Data Lake Gen2 brengt kosten in rekening voor minimale transactiegrootte. Als u het tijdvenster zo laag instelt dat het bestand niet de minimale grootte heeft bereikt, worden er extra kosten in rekening gebracht.

Bronartefacten

Gebruik de volgende query om Event Hubs-naamruimten met Basic SKU te vinden:

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

Volgende stap