Table of Contents
Inleiding tot Azure Event Grid
Azure Event Grid is een volledig beheerde event routing service die fungeert als de ruggengraat voor event-gedreven architecturen in de cloud. Het maakt verschillende componenten van een applicatie mogelijk . Of het nu Azure diensten, aangepaste toepassingen of systemen van derden zijn . om asynchroon te communiceren door het publiceren en abonneren op evenementen . Deze ontkoppeling maakt het mogelijk systemen veerkrachtiger, schaalbaar en responsief te zijn op veranderingen in real-time. Event Grid ondersteunt hoge doorvoer met lage latency, waardoor het geschikt is voor een breed scala van use cases, van infrastructuurautomatisering tot applicatie integratie.
In deze gids zullen we het volledige proces van het opzetten en gebruiken van Azure Event Grid doorlopen. U leert hoe u onderwerpen kunt maken, abonnementen kunt configureren, evenementen kunt publiceren en beste praktijken voor betrouwbaarheid, beveiliging en monitoring kunt implementeren. Tegen het einde zult u een solide basis hebben voor het bouwen van event-driven oplossingen in Azure.
Begrijpen van Event-Driven Architectures
Traditionele verzoek-respons architectuur vaak maken nauwe koppeling tussen diensten. Wanneer een dienst moet anderen op de hoogte van een verandering, moet het weten waar elke ontvanger is en hoe ze te bellen. Dit leidt tot complexe afhankelijkheden en broze integraties. Event-gedreven architecturen oplossen dit door de invoering van een tussenpersoon . de event broker . die de routing van evenementen van producenten naar abonnees beheert . Producenten publiceren evenementen naar een onderwerp zonder te weten wie ze zal consumeren , en abonnees registreren interesse in bepaalde evenementen zonder te weten wie ze geproduceerd .
Azure Event Grid blinkt uit in deze rol omdat het is ontworpen voor massale schaal en betrouwbaarheid. Het ondersteunt zowel systeem gebeurtenissen (zoals blob opslag of resource groep wijzigingen) en aangepaste gebeurtenissen uit uw eigen toepassingen. De service verwerkt automatisch retrieves, dood-lettering, en filteren, zodat u zich kunt concentreren op de bedrijfslogica in plaats van infrastructuur sanitair.
Sleutelbegrippen van Azure Event Grid
Gebeurtenissen
Een gebeurtenis is een klein stukje gegevens dat beschrijft wat er gebeurd is. Elke gebeurtenis bevat een onderwerp, gebeurtenistype, gebeurtenistijd en een gegevenslading. Bijvoorbeeld, een opslagaccount aanmaak gebeurtenis kan het onderwerp en gebeurtenis type . Aangepaste gebeurtenissen volgen dezelfde schemastructuur.
Onderwerpen
Een onderwerp is een eindpunt waar gebeurtenissen worden verzonden. Het biedt een naamruimte voor gebeurtenissen van een bepaalde categorie. U kunt systeemonderwerpen maken voor Azure bronnen (zoals een opslagaccount of resource groep) of aangepaste onderwerpen voor uw eigen toepassingen. Onderwerpen zijn regionale bronnen, dus u moet een regio kiezen tijdens het aanmaken.
Abonnementen op evenementen
Abonnementen bepalen welke gebeurtenissen een abonnee wil ontvangen en hoe ze geleverd moeten worden. U kunt gebeurtenissen filteren op basis van onderwerp, gebeurtenistype of datavelden. Abonnementen geven ook het eindpunttype aan. Gemeenschappelijke opties zijn onder andere webhooks (HTTP-eindpunten), Azure functies, Event Hubs, Service Bus wachtrijen of onderwerpen, en Azure Logic Apps. Elk abonnement kan zijn eigen retrybeleid en dead-letter bestemming hebben.
Eventuitgevers
Elke dienst of toepassing die evenementen naar een Event Grid onderwerp stuurt is een uitgever. Uitgevers hoeven niet te weten over abonnees; ze posten gewoon gebeurtenissen naar het topic eindpunt. Azure SDK's, REST API en CLI zijn beschikbaar voor het publiceren van evenementen.
Event Handlers
De event handler is het onderdeel dat de inkomende gebeurtenis verwerkt. Azure Event Grid ondersteunt verschillende soorten handler: webhooks die reageren op HTTP POST, Azure functies, Automation runbooks, Logic Apps, en nog veel meer. Voor webhooks, Event Grid vereist een handdruk om het eindpunt te valideren voordat gebeurtenissen worden geleverd.
Stap-voor-stap instellen van Azure Event Grid
Laten we de praktische stappen doorlopen om Azure Event Grid op te zetten, van het creëren van een onderwerp tot het inschrijven en publiceren van evenementen.
1. Maak een onderwerp van het evenementraster
Ga naar het Azure-portaal (portal.azure.com) en zoek naar
- Abonnement: Het Azure abonnement waaronder het onderwerp zal worden gemaakt.
- Resource groep: Gebruik een bestaande groep of maak een nieuwe groep om middelen te organiseren.
- Naam: Een wereldwijd unieke naam voor het onderwerp. Dit wordt onderdeel van de eindpunt-URL.
- Region: Selecteer een Azure regio dicht bij uw diensten.
Optioneel kunt u systeem toegewezen beheerde identiteit of toevoegen van tags voor governance. Na validatie, klik op Create. De implementatie duurt een minuut of twee. Zodra klaar, zult u de topic endpoint URL en een toegangssleutel of SAS token in de topic .Keys .
2. Maak een evenementabonnement aan
Met het thema aangemaakt, heb je minstens één abonnement nodig om evenementen te ontvangen. Klik op + Event Abonnement. Geef aan:
- Naam: Een beschrijvende naam voor het abonnement.
- Event Schema: Kies tussen Event Grid schema of CloudEvents v1.0 schema. CloudEvents wordt de industriestandaard voor interoperabiliteit.
- Eindpunttype: Selecteer het type begeleider. Kies voor het testen Webhook en geef de URL van uw eindpunt. Voor de productie kunt u een Azure Functie of Logic App gebruiken.
- Filters: U kunt filteren op gebeurtenistypes, onderwerp begint/eindigt met of geavanceerde filters (bijv. datavelden) inschakelen. Hierdoor worden ongewenste gebeurtenissen minder actief.
- Retry Policy: Stel het maximum aantal leveringspogingen en tijd-tot-leven voor gebeurtenissen in. Standaard is 30 dagen en 4 herhalingen.
- Dead-Lettering: Geef een opslagruimte op waar onleverbare gebeurtenissen worden verzonden na een vermoeiende herhaling. Dit is van cruciaal belang voor debuggen en betrouwbaarheid.
Klik Maak . Als u een webhook-eindpunt hebt gekozen, stuurt het Event Grid een validatieverzoek. Uw eindpunt moet reageren met een validatiecode (vaak onderdeel van het handshake-proces) om de eigendom te bevestigen. Zodra de gebeurtenissen zijn gevalideerd, zullen de gebeurtenissen vloeien.
3. Publishing Events
Om gebeurtenissen te publiceren, heb je de topic endpoint URL en een toegangssleutel of SAS token nodig. De laadvermogen van het evenement moet volgen op het Event Grid schema. Hier is een minimaal voorbeeld met behulp van de Azure CLI:
az eventgrid event submit \
--endpoint https://your-topic.westus-1.eventgrid.azure.net/api/events \
--subject "custom/test" \
--event-type "MyApp.NewRecord" \
--data '{"id":123,"name":"test"}' \
--key aabbccdd...
U kunt ook REST API, PowerShell of SDK's (C#, Python, Java, Node.js) gebruiken. Voor serverloze omgevingen kunnen Azure Functies evenementen publiceren via een uitvoerbinding.
4. Omgaan met gebeurtenissen met azure functies
Een van de meest voorkomende patronen is om een Azure Functie als een evenement begeleider te gebruiken. Maak een nieuwe Azure Functie App en voeg een Event Grid trigger toe. De functie zal gebeurtenissen ontvangen als JSON. Hier een eenvoudig C# voorbeeld:
[FunctionName("ProcessEvent")]
public static void Run([EventGridTrigger] EventGridEvent eventGridEvent, ILogger log)
{
log.LogInformation($"Received event: {eventGridEvent.EventType} with subject {eventGridEvent.Subject}");
// Process the event data
}
De functie runtime valideert automatisch de webhook handshake als u de activiteitsband van het Event Grid gebruikt. Deze benadering geeft u een schaalbare, serverloze event-processor.
Geavanceerde scenario's en patronen
Azure Event Grid ondersteunt geavanceerde architecturen, naast de basisopstelling. Hier zijn verschillende geavanceerde gebruikscases:
Filteren en uitpakken
Gebruik geavanceerde filtering om gebeurtenissen te routeren op basis van datawaarden. Bijvoorbeeld, u kunt een onderwerp dat gebeurtenissen ontvangt van meerdere afdelingen. U kunt aparte abonnementen voor .HR . Events (filter op ) en .HIT . Dit zorgt ervoor dat elke begeleider alleen processen relevante gebeurtenissen, verminderen belasting en het vereenvoudigen van de logica.
Gebeurtenisrasterdomeinen
Wanneer u veel onderwerpen voor verschillende huurders of toepassingen moet beheren, bieden Event Grid Domains een hiërarchische naamruimte. Elk domein kan meerdere onderwerpen bevatten en u kunt beleid, authenticatie en monitoring toepassen op het domeinniveau. Dit is ideaal voor SaaS-aanbieders die evenementendiensten aanbieden aan meerdere klanten.
Hybride en multi-cloud integratie
Event Grid kan verbinding maken met externe systemen met behulp van webhooks. U kunt gebeurtenissen verzenden naar systemen op locatie via hybride verbindingen, of naar andere cloudproviders met behulp van publieke HTTP-eindpunten. Gebruik voor beveiliging beheerde identiteiten en SAS-tekens om uitgaande oproepen te authenticeren. Overweeg ook om Azure Arc te gebruiken om on-premises bronnen te beheren met Event Grid.
Integratie met Azure Logic Apps
Logic Apps kan evenementen van Event Grid gebruiken als trigger, waardoor workflows met een lage code mogelijk worden. Bijvoorbeeld, wanneer een nieuwe blob wordt aangemaakt in opslag, kan een Logic App het automatisch kopiëren naar een andere locatie, een e-mail versturen of een database bijwerken. De visuele ontwerper maakt het eenvoudig om complexe orkestraties te bouwen zonder code te schrijven.
Beste praktijken voor productie-inzet
Om ervoor te zorgen dat uw Event Grid-oplossing betrouwbaar, veilig en kosteneffectief is, volg deze beste praktijken:
- Altijd inschakelen van dode letters. Zonder deze, worden niet-verleverde gebeurtenissen geruisloos gedropt na retrieves. Een dode letter bestemming (blob opslag) helpt u bij het diagnosticeren van leveringsfouten en reprocess gebeurtenissen indien nodig.
- Gebruik beheerde identiteiten voor authenticatie. In plaats van sleutels op te slaan, schakelt u beheerde identiteit in op uw uitgever (bijv. een Azure Functie) en geeft u deze toestemming om het onderwerp te publiceren. Voor abonnees gebruikt u beheerde identiteiten om sleutelbeheer te vermijden.
- Voerfiltering op het abonnementsniveau. Dit vermindert het aantal aanroepen op uw verwerkers, bespaart kosten en verbetert de prestaties. Gebruik geavanceerde filters voor fijnkorrelige controle.
- Ontwerp idempotent handlers. Omdat Event Grid tenminste eenmaal een levering garandeert, kan uw begeleider meerdere keren hetzelfde evenement ontvangen. Zorg ervoor dat uw verwerkingslogica sierlijk kan omgaan met duplicaten (bijvoorbeeld door een unieke event-ID te controleren of door gebruik te maken van een deduplicatie store).
- Monitor met Azure Monitor. Track metrics zoals levering succespercentage, gedaalde gebeurtenissen, latentie, en dood-letterde tellen. Stel waarschuwingen voor afwijkingen. Gebruik diagnostische instellingen om logs te sturen naar Log Analytics voor diepere analyse.
- Plan voor geo-disaster recovery. Onderwerpen zijn regionaal. Als je wereldwijde veerkracht nodig hebt, installeer onderwerpen in meerdere regio's en gebruik een aangepast routeringsmechanisme. Overweeg dan om Azure Event Grids partnerevenementen of cross-regio-replicatie voor kritische scenario's te gebruiken.
- Houd event payloads klein. Gebeurtenissen worden geleverd als HTTP POST-lichamen. Grote payloads verhogen latency en kosten. Voeg alleen een referentie-URL of ID in het geval, en laat de begeleider extra gegevens uit een repository halen.
Veiligheidsoverwegingen
Beveiliging in event-driven systemen heeft verschillende lagen:
- Authenticatie voor uitgevers: Gebruik SAS-sleutels, beheerde identiteiten of Azure AD-authenticatie om het topic-eindpunt te beveiligen. Vermijd inbedding van sleutels in code; gebruik belangrijke gewelf of service principal referenties.
- Eindpuntvalidatie voor abonnees: Bij het gebruik van webhooks stuurt Event Grid een validatiehanddruk om de abonnee te bevestigen dat het eindpunt aan de hand is. Uw webhook moet adequaat reageren om niet-geautoriseerde doorzending van gebeurtenissen te voorkomen.
- Network security: Gebruik privé-eindpunten om toegang te krijgen tot Event Grid via een VNet. Dit zorgt ervoor dat het verkeer nooit door het publieke internet gaat. Voor hybride scenario's, gebruik Azure VPN of ExpressRoute.
- Gegevenscodering: Gebeurtenissen worden in rust en in transit gecodeerd (TLS 1.2+). U kunt ook uw eigen sleutel (BYOK) meenemen voor extra controle over encryptiesleutels.
Kostenbeheer
Azure Event Grid prijzen is gebaseerd op het aantal operaties (gepubliceerde evenementen en levering pogingen) en het aantal van onderwerp / abonnement middelen. Om kosten te optimaliseren:
- Combineer meerdere eventtypes in één onderwerp en filter op het abonnementsniveau. Dit vermindert het aantal benodigde onderwerpen.
- Gebruik event filteren agressief om onnodige leveringen te voorkomen. Elke levering telt als een operatie.
- Hefboom Grid Domeinen voor multi-tenant scenario's . They delen infrastructuur en kunnen goedkoper dan afzonderlijke onderwerpen.
- Stel het juiste hertry beleid in. De standaard retrieves (30 dagen) kunnen te lang zijn; pas de time-to-live en max retrieves aan op basis van uw SLA.
Monitor uw gebruik via Azure Cost Management en stel budgetten of waarschuwingen om onverwachte rekeningen te voorkomen.
Monitoring en probleemoplossing
Azure Monitor biedt uitgebreide metrics voor Event Grid. Belangrijke metrics zijn:
- Publiceren Succeed: Aantal met succes gepubliceerde gebeurtenissen.
- Publiceren mislukt: Gebeurtenissen die niet konden worden gepubliceerd (bijv. authenticatiefouten).
- Levering Succeed: Gebeurtenissen met succes geleverd aan abonnees.
- Levering mislukt: Gebeurtenissen die niet konden worden geleverd (bv. eindpunt niet bereikbaar).
- Dode Geletterde : Gebeurtenissen die uitgeput opnieuw pogingen.
U kunt ook diagnostische logs voor het onderwerp en abonnement. Logs vastleggen details over elke publicatie en levering operatie, met inbegrip van foutcodes en latency. Gebruik Log Analytics queries om storingen te correleren met specifieke gebeurtenis types.
Gemeenschappelijke stappen voor het oplossen van problemen:
- Als gebeurtenissen niet uw begeleider bereiken, controleer dan de gezondheid van het abonnement eindpunt. Gebruik de ..test ..mogelijkheid in het portaal om een monster evenement te verzenden.
- Als de validatie voor een webhook mislukt, zorgt u ervoor dat uw eindpunt HTTP 200 met de validatiecode teruggeeft. Voor Azure Functies wordt dit automatisch verwerkt.
- Als gebeurtenissen worden dood-letterd, inspecteer de dode-letter blob container voor de oorspronkelijke gebeurtenis lading en foutgegevens.
Integratie met andere Azure diensten
Azure Event Grid werkt natively met vele Azure diensten. Hier zijn een paar gemeenschappelijke integraties:
- Azure Blob Storage: Automatisch verstuurt gebeurtenissen wanneer blobs worden aangemaakt, verwijderd of bijgewerkt. Nuttig voor het activeren van de verwerking van pijpleidingen.
- Azure DevOps: Reageer om voltooiingen te bouwen, verzoeken om gebeurtenissen te trekken en meer om CI/CD te automatiseren.
- Azure Machine Learning: Omscholingsbanen of aanlegpijpleidingen in gang zetten wanneer nieuwe gegevens aankomen.
- Azure IoT-hub: telemetrie van het routeapparaat en levenscyclusgebeurtenissen voor downstreamverwerking.
- Azure Kubernetes Service (AKS): Gebruik Event Grid om AKS-evenementen te bekijken voor het autoschalen van clusters of toepassingsimplementatie.
De kracht van Event Grid ligt in het vermogen om deze ongelijksoortige diensten te verbinden met minimale code.
Real-World Voorbeeld: Serverless Order Processing
Stel je een e-commerce platform voor dat bestellingen verwerkt. Wanneer een klant een bestelling plaatst, publiceert de webapp een evenement aan een Event Grid onderwerp: met gegevens zoals order-ID, klantinformatie en items. Drie abonnementen zijn geconfigureerd:
- Inventory Service (Azure functie): Reserveert voorraad en updates inventaris database.
- Betaaldienst (Logic App): verwerkt betaling via een gateway van derden.
- Notification Service (Webhook to SendGrid): Stuurt bevestigingsmail naar de klant.
Elk abonnement filtert per evenementtype en onderwerp, zodat ze alleen relevante gebeurtenissen ontvangen. Als de betalingsdienst mislukt, worden retrieves geprobeerd; na uitputting wordt de gebeurtenis doodgeletterd voor handmatige interventie. Het hele systeem wordt losgekoppeld: de webapp hoeft niet te weten over de downstream services. Nieuwe diensten kunnen later worden toegevoegd door simpelweg een nieuw abonnement te maken.
Beperkingen en alternatieven
Hoewel Azure Event Grid krachtig is, heeft het enkele beperkingen:
- Eventgroottelimiet: Maximale gebeurtenisgrootte is 1 MB (inclusief kopregels). Voor grotere ladingen, gebruik een verwijzing naar blob opslag.
- Droughput: Hoewel hoog, zijn er per-topic tarieflimieten. Voor extreem hoge doorvoer (miljoenen gebeurtenissen per seconde), overwegen Azure Event Hubs voor gebeurtenis inname en Event Grid voor het routeren van specifieke gebeurtenissen.
- Bestellen: Event Grid garandeert geen per-topic bestelling; gebeurtenissen kunnen buiten de orde komen. Als bestellen kritiek is, gebruik dan Event Hubs of Service Bus.
- Minstens één levering : Dubbele levering is mogelijk. Handlers moeten idempotent zijn.
Kies Azure Event Grid wanneer u een eenvoudige, serverloze event router met pub/sub semantiek nodig hebt. Voor evenementstreaming of bestelde levering, combineer het met andere Azure messaging diensten.
Conclusie
Azure Event Grid is een basisdienst voor het bouwen van moderne event-gedreven toepassingen in de cloud. Door producenten te ontkoppelen van consumenten, maakt het architecturen die schaalbaar, veerkrachtig en gemakkelijk uit te breiden. Het opzetten van het programma impliceert het creëren van een onderwerp, een of meer abonnementen, en een begeleider om evenementen te verwerken. Beste praktijken zoals doodletteren, filteren, idempotent handlers, en monitoring zorgen voor productie gereedheid.
Of u nu infrastructuur automatiseert, microservices met elkaar verbindt of een real-time meldingssysteem opbouwt, Event Grid biedt een robuuste, kostenefficiënte evenementenroutering laag. Start klein, omarm de event-driven mindset en breidt geleidelijk uw boodschapgebaseerde workflows uit. De flexibiliteit en integratie met het grotere Azure ecosysteem maken Event Grid een keuze voor zowel ontwikkelaars als architecten.
Voor verdere lezing, verken de officiële Azure Event Grid documentatie en de event schema referentie[.