Schalen met Event Hubs
Er zijn twee factoren die van invloed zijn op het schalen met Event Hubs.
- Doorvoereenheden (Standard-laag) of verwerkingseenheden (Premium-laag)
- Partities
Doorvoereenheden
De doorvoercapaciteit van Event Hubs wordt bepaald door doorvoereenheden. Doorvoereenheden zijn vooraf aangeschafte capaciteitseenheden. Met één doorvoer kunt u:
- Ingress: maximaal 1 MB per seconde of 1000 gebeurtenissen per seconde (wat het eerst komt).
- Egress: maximaal 2 MB per seconde of 4096 gebeurtenissen per seconde.
Wanneer de capaciteit van de aangekochte doorvoereenheden wordt overschreven, wordt de invoer vertraagd en een ServerBusyException afgegeven. De uitvoer geeft geen vertragingsuitzonderingen af, maar is nog steeds beperkt tot de capaciteit van de aangekochte doorvoereenheden. Als zich uitzonderingen met betrekking tot de publicatiesnelheid voordoen of als u meer uitgaande gegevens verwacht, controleert u hoeveel doorvoereenheden u hebt aangeschaft voor de naamruimte. U kunt doorvoereenheden beheren op de blade Schaal van de naamruimten in Azure Portal. U kunt doorvoereenheden ook programmatisch beheren met behulp van Event Hubs API's.
Doorvoereenheden worden vooraf aangeschaft en worden per uur gefactureerd. Nadat u doorvoereenheden hebt aangeschaft, worden deze voor minimaal één uur in rekening gebracht. Er kunnen maximaal 40 doorvoereenheden worden aangeschaft voor een Event Hubs-naamruimte en worden gedeeld met alle Event Hubs in die naamruimte.
De functie Automatisch vergroten van Event Hubs wordt automatisch omhoog geschaald door het aantal doorvoereenheden te verhogen om te voldoen aan de gebruiksbehoeften. Het verhogen van doorvoereenheden voorkomt beperkingsscenario's, waarin:
- De ingresssnelheden van gegevens overschrijden de set doorvoereenheden.
- De aanvraagsnelheden voor gegevensegressie overschrijden de set doorvoereenheden.
De Event Hubs-service verhoogt de doorvoer wanneer de belasting de minimumdrempelwaarde overschrijdt, zonder dat aanvragen mislukken met ServerBusy-fouten.
Zie Doorvoereenheden automatisch schalen voor meer informatie over de functie voor automatisch opschalen.
Verwerkingseenheden
Event Hubs Premium biedt uitstekende prestaties en betere isolatie met in een beheerde PaaS-omgeving met meerderetenant. De resources in een Premium zijn geïsoleerd op CPU- en geheugenniveau, zodat elke tenantworkload geïsoleerd wordt uitgevoerd. Deze resourcecontainer wordt een verwerkingseenheid(PU) genoemd. U kunt 1, 2, 4, 8 of 16 verwerkingseenheden kopen voor elke Event Hubs Premium naamruimte.
Hoeveel u met een verwerkingseenheid kunt opnemen en streamen, is afhankelijk van verschillende factoren, zoals uw producenten, consumenten, de snelheid waarmee u gegevens opslikt en verwerkt, en nog veel meer. Eén verwerkingseenheid kan ongeveer een kerncapaciteit bieden van ongeveer 5-10 MB/s ingress en 10-20 MB/s egress, gezien het feit dat we voldoende partities hebben, zodat opslag geen beperkingsfactor is.
Zie Configure processing units (Verwerkingseenheden configureren) voor meer informatie over het configureren van PUs voor een premium-laagnaamruimte.
Notitie
Zie quota en limieten voor meer informatie Azure Event Hubs quota en limieten.
Partities
Event Hubs organiseert reeksen gebeurtenissen die naar een Event Hub worden verzonden, in een of meer partities. Als er nieuwere gebeurtenissen plaatsvinden, worden deze toegevoegd aan het einde van deze reeks.

Een partitie kan worden zien als een 'commit log'. Partities bevatten gebeurtenisgegevens die de body van de gebeurtenis bevatten, een door de gebruiker gedefinieerde eigenschappentas die de gebeurtenis beschrijft, metagegevens zoals de offset in de partitie, het nummer in de stroomreeks en het tijdstempel aan de servicezijde waarop deze is geaccepteerd.

Voordelen van het gebruik van partities
Event Hubs is ontworpen om te helpen bij het verwerken van grote hoeveelheden gebeurtenissen. Partitioneren draagt hier op twee manieren aan bij:
- Hoewel Event Hubs een PaaS-service is, ligt er een fysieke realiteit onder en voor het onderhouden van een logboek dat de volgorde van gebeurtenissen behoudt, moeten deze gebeurtenissen worden bewaard in de onderliggende opslag en de replica's, wat resulteert in een doorvoer maximum voor een dergelijk logboek. Partitionering maakt het mogelijk om meerdere parallelle logboeken te gebruiken voor dezelfde Event Hub en dus de beschikbare onbewerkte I/O-doorvoercapaciteit te vermenigvuldigen.
- Uw eigen toepassingen moeten het volume aan gebeurtenissen dat naar een Event Hub wordt verzonden, kunnen blijven verwerken. Dit kan complex zijn en vereist aanzienlijke, uitgeschaalde en parallelle verwerkingscapaciteit. De capaciteit van één proces voor het afhandelen van gebeurtenissen is beperkt, dus u hebt verschillende processen nodig. Partities zijn de manier waarop uw oplossing deze processen verwerkt en er toch voor zorgt dat elke gebeurtenis een duidelijke verwerkingseigenaar heeft.
Aantal partities
Het aantal partities wordt opgegeven op het moment dat een Event Hub wordt gemaakt. Dit moet tussen 1 en het maximum aantal partities zijn dat is toegestaan voor elke prijscategorie. Zie dit artikel voor de limiet voor het aantal partities voor elke laag.
U wordt aangeraden minstens zo veel partities te kiezen als verwacht tijdens de piekbelasting van uw toepassing voor die specifieke Event Hub. U kunt het aantal partities voor een Event Hub na het maken niet wijzigen, met uitzondering van de Event Hub in een toegewezen cluster en premium-laag. Het aantal partities van een Event Hub in een toegewezen Event Hubs-cluster kan worden verhoogd nadat de Event Hub is gemaakt, maar de distributie van stromen over partities verandert als deze klaar is, omdat de toewijzing van partitiesleutels aan partities verandert. U kunt dus het beste proberen om dergelijke wijzigingen zoveel mogelijk te vermijden als de relatieve volgorde van gebeurtenissen in uw toepassing van belang is.
Het instellen van het aantal partities op de maximaal toegestane waarde is verleidelijk, maar u moet er altijd rekening mee houden dat uw gebeurtenissenstromen zo moeten worden gestructureerd dat u wel kunt profiteren van meerdere partities. Als u de volgorde van alle gebeurtenissen of voor een klein aantal substromen echt moet behouden, kunt u misschien niet profiteren van het gebruik van veel partities. Daarnaast maken veel partities de verwerkingszijde complexer.
Het maakt niet uit hoeveel partities een Event Hub heeft als het gaat om prijzen. Dit is afhankelijk van het aantal prijseenheden(doorvoereenheden (TUS's) voor de Standard-laag, verwerkingseenheden (PUS's) voor de Premium-laag en capaciteitseenheden (CUs) voor de toegewezen laag) voor de naamruimte of het toegewezen cluster. Voor een Event Hub van de standard-laag met 32 partities of met 1 partitie worden bijvoorbeeld exact dezelfde kosten in gebruik wanneer de naamruimte is ingesteld op 1 TU-capaciteit. U kunt ook DEP's of PUS's op uw naamruimte of DE's van uw toegewezen cluster schalen, onafhankelijk van het aantal partities.
Gebeurtenissen toewijzen aan partities
U kunt een partitiesleutel gebruiken om inkomende gebeurtenisgegevens toe te wijzen aan specifieke partities, zodat de gegevens kunnen worden geordend. De partitiesleutel is een door de afzender opgegeven waarde die aan een Event Hub wordt doorgegeven. De partitiesleutel wordt verwerkt door een statische hash-functie, die zorgt voor de partitietoewijzing. Als u bij het publiceren van een gebeurtenis geen partitiesleutel opgeeft, wordt er gebruikgemaakt van round robin-toewijzing.
De gebeurtenisuitgever is alleen op de hoogte van de partitiesleutel en niet van de partitie waarop de gebeurtenissen worden gepubliceerd. Deze ontkoppeling van sleutel en partitie schermt de afzender af, zodat deze niet te veel te weten hoeft te komen over de downstreamverwerking. Goede partitiesleutels zijn bijvoorbeeld een apparaatspecifieke of een gebruikersspecifieke identiteit, maar voor het groeperen van gerelateerde gebeurtenissen in dezelfde partitie kunnen ook andere kenmerken, zoals geografie, worden gebruikt.
Door een partitiesleutel op te geven, kunnen gerelateerde gebeurtenissen bij elkaar worden geplaatst in dezelfde partitie en in de exacte volgorde waarin ze zijn aangekomen. De partitiesleutel is een tekenreeks die is afgeleid van uw toepassingscontext en identificeert de relatie tussen de gebeurtenissen. Een reeks gebeurtenissen die wordt geïdentificeerd door een partitiesleutel is een stroom. Een partitie is een multiplex-logboekopslag voor veel van zulke stromen.
Notitie
Hoewel u gebeurtenissen rechtstreeks naar partities kunt verzenden, raden we dit niet aan, met name wanneer hoge beschikbaarheid belangrijk voor u is. De beschikbaarheid van een Event Hub wordt naar partitieniveau gedowngraded. Zie Beschikbaarheid en consistentie voor meer informatie.
Volgende stappen
U kunt meer informatie over Event Hubs vinden via de volgende koppelingen: