Azure Event Grid kiezen
Veel toepassingen gebruiken een model voor publiceren/abonneren om gedistribueerde onderdelen te waarschuwen dat er iets is gebeurd of dat een bepaald object is gewijzigd. Stel dat u een toepassing voor het delen van muziek hebt met een web-API die wordt uitgevoerd in Azure. Wanneer een gebruiker een nieuw nummer uploadt, moet u alle mobiele apps op de hoogte stellen die zijn geïnstalleerd op gebruikersapparaten over de hele wereld die geïnteresseerd zijn in dat genre.
In deze architectuur hoeft de uitgever van het geluidsbestand niets te weten over een van de abonnees die geïnteresseerd zijn in de gedeelde muziek. We willen ook een een-op-veel-relatie hebben, waar we meerdere abonnees kunnen hebben die optioneel kunnen beslissen of ze geïnteresseerd zijn in dit nieuwe nummer. Azure Event Grid is een perfecte oplossing voor dit soort architectuur.
Wat is Azure Event Grid?
Azure Event Grid is een volledig beheerde service voor gebeurtenisroutering die wordt uitgevoerd boven op Azure Service Fabric-. Event Grid distribueert gebeurtenissen uit verschillende bronnen, zoals Azure Blob Storage-accounts of Azure Media Services-, naar verschillende handlers, zoals Azure Functions of Webhooks. Event Grid is gemaakt om het eenvoudiger te maken om op gebeurtenissen gebaseerde en serverloze toepassingen in Azure te bouwen.
Event Grid ondersteunt de meeste Azure-services als uitgever of abonnee en kan worden gebruikt met services van derden. Het biedt een dynamisch schaalbaar, goedkoop berichtensysteem waarmee uitgevers abonnees kunnen informeren over een statuswijziging. In de volgende afbeelding ziet u hoe Azure Event Grid berichten van meerdere bronnen ontvangt en distribueert naar gebeurtenis-handlers op basis van een abonnement.
Er zijn verschillende concepten in Azure Event Grid die een bron verbinden met een abonnee:
- gebeurtenissen: Wat is er gebeurd?
- Gebeurtenisbronnen: Waar vond de gebeurtenis plaats?
- Onderwerpen: het eindpunt waar uitgevers gebeurtenissen verzenden.
- Gebeurtenisabonnementen: het eindpunt of het ingebouwde mechanisme voor het routeren van gebeurtenissen, soms naar meerdere handlers. Handlers gebruiken ook abonnementen om binnenkomende gebeurtenissen intelligent te filteren.
- gebeurtenis-handlers: de app of service die op de gebeurtenis reageert.
In de volgende afbeelding ziet u een Azure Event Grid tussen meerdere gebeurtenisbronnen en meerdere gebeurtenis-handlers. De gebeurtenisbronnen verzenden gebeurtenissen naar Event Grid en Event Grid stuurt relevante gebeurtenissen door naar de abonnees. Event Grid gebruikt onderwerpen om te bepalen welke gebeurtenissen naar welke handlers moeten worden verzonden. Gebeurtenisbronnen taggen elke gebeurtenis met een of meer onderwerpen en gebeurtenis-handlers abonneren zich op de onderwerpen waarin ze geïnteresseerd zijn.
Wat is een gebeurtenis?
gebeurtenissen zijn de gegevensberichten die via Event Grid worden doorgegeven, waarin wordt beschreven wat er heeft plaatsgevonden. Elke gebeurtenis is zelfstandig, kan maximaal 64 kB zijn en bevat verschillende gegevens op basis van een schema dat is gedefinieerd door Event Grid of een Cloud-gebeurtenisschema.
Dit is het Event Grid-gebeurtenisschema:
[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]
Veld | Beschrijving |
---|---|
onderwerp | Het volledige resourcepad naar de gebeurtenisbron. Event Grid biedt deze waarde. |
onderwerp | Door publisher gedefinieerd pad naar het gebeurtenisonderwerp. |
id | De unieke id voor de gebeurtenis. |
gebeurtenistype | Een van de geregistreerde gebeurtenistypen voor deze gebeurtenisbron. U kunt filters maken op basis van deze waarde, bijvoorbeeld CustomerCreated , BlobDeleted , HttpRequestReceived , enzovoort. |
evenementTijd | De tijd waarop de gebeurtenis is gegenereerd op basis van de UTC-tijd van de provider. |
gegevens | Specifieke informatie die relevant is voor het type gebeurtenis. Bijvoorbeeld: een gebeurtenis over een nieuw bestand dat in Azure Storage wordt gemaakt, bevat details over het bestand, zoals de lastTimeModified waarde. Ofwel heeft een gebeurtenis van Event Hubs de URL van het Capture-bestand. Dit veld is optioneel. |
dataVersion | De schemaversie van het gegevensobject. De uitgever definieert de schemaversie. |
metadataVersion | De schemaversie van de gebeurtenismetagegevens. Event Grid definieert het schema van de eigenschappen op het hoogste niveau. Event Grid biedt deze waarde. |
Fooi
Event Grid verzendt een gebeurtenis om aan te geven dat er iets is gebeurd of gewijzigd. Het werkelijke object dat is gewijzigd, maakt echter geen deel uit van de gebeurtenisgegevens. In plaats daarvan wordt vaak een URL of id doorgegeven om te verwijzen naar het gewijzigde object.
Wat is een gebeurtenisbron?
Gebeurtenisbronnen zijn verantwoordelijk voor het verzenden van gebeurtenissen naar Event Grid. Elke gebeurtenisbron is gerelateerd aan een of meer gebeurtenistypen. Azure Storage is bijvoorbeeld de gebeurtenisbron voor gebeurtenissen die door de blob zijn gemaakt. IoT Hub is de gebeurtenisbron voor door het apparaat gemaakte gebeurtenissen. Uw toepassing is de gebeurtenisbron voor aangepaste gebeurtenissen die u definieert. We zullen zo meer in detail naar gebeurtenisbronnen kijken.
Azure Event Grid heeft het concept van een gebeurtenisuitgever die vaak wordt verward met de gebeurtenisbron. Een gebeurtenisuitgever is de gebruiker of organisatie die besluit gebeurtenissen naar Event Grid te verzenden. Microsoft publiceert bijvoorbeeld gebeurtenissen voor verschillende Azure-services. U kunt gebeurtenissen publiceren vanuit uw eigen toepassing. Organisaties die services buiten Azure hosten, kunnen gebeurtenissen publiceren via Event Grid. De gebeurtenisbron is de specifieke service die de gebeurtenis voor die uitgever genereert. Hoewel de twee termen enigszins afwijken, gebruiken we voor de doeleinden van deze eenheid 'uitgever' en 'gebeurtenisbron' door elkaar om de entiteit weer te geven die het bericht verzendt naar Event Grid.
Wat is een gebeurtenisonderwerp?
Gebeurtenisonderwerpen categoriseren gebeurtenissen in groepen. Onderwerpen worden vertegenwoordigd door een openbaar eindpunt en de gebeurtenisbron verzendt gebeurtenissen naar. Wanneer u uw toepassing ontwerpt, kunt u bepalen hoeveel onderwerpen u wilt maken. Grotere oplossingen maken een aangepast onderwerp voor elke categorie gerelateerde gebeurtenissen, terwijl kleinere oplossingen alle gebeurtenissen naar één onderwerp kunnen verzenden. Denk bijvoorbeeld aan een toepassing die gebeurtenissen verzendt die betrekking hebben op het wijzigen van gebruikersaccounts en het verwerken van orders. Het is onwaarschijnlijk dat elke gebeurtenis-handler beide categorieën gebeurtenissen wil. Maak twee aangepaste onderwerpen en laat gebeurtenishandlers zich abonneren op degene die ze interesseert. Gebeurtenisabonnees kunnen filteren op de gewenste gebeurtenistypen uit een specifiek onderwerp.
Onderwerpen zijn onderverdeeld in systeem onderwerpen en aangepaste onderwerpen.
Systeemonderwerpen
Een systeemonderwerp in Event Grid vertegenwoordigt een of meer gebeurtenissen die zijn gepubliceerd door Azure-services zoals Azure Storage en Azure Event Hubs. Een systeemonderwerp kan bijvoorbeeld alle blob-gebeurtenissen vertegenwoordigen of alleen de evenementen van aangemaakte en verwijderde blobs die voor een specifiek opslagaccount zijn gepubliceerd. Wanneer in dit voorbeeld een blob wordt geüpload naar het opslagaccount, publiceert de Azure Storage-service een gebeurtenis voor een gecreëerde blob naar het systeemeigen onderwerp in Event Grid, waarna de gebeurtenis wordt doorgestuurd naar de abonnees van het onderwerp die de gebeurtenis ontvangen en verwerken.
U kunt zich abonneren op gebeurtenissen voor een resource, zoals een Azure Storage-account, en Event Grid maakt automatisch een systeemonderwerp voor het opslagaccount voor u. U kunt ook een systeemonderwerp maken en een abonnement op het onderwerp handmatig maken in Azure Portal.
Aangepaste onderwerpen
Aangepaste onderwerpen zijn onderwerpen van toepassingen en derden. Wanneer u toegang tot een aangepast onderwerp maakt of toewijst, ziet u dat aangepaste onderwerp in uw abonnement.
Wat is een gebeurtenisabonnement?
Gebeurtenisabonnementen bepalen welke gebeurtenissen in een onderwerp een gebeurtenis-handler wil ontvangen. Een abonnement kan gebeurtenissen ook filteren op type of onderwerp, zodat u ervoor kunt zorgen dat een gebeurtenis-handler alleen relevante gebeurtenissen ontvangt.
Wat is een gebeurtenisafhandelaar?
Een gebeurtenis-handler (ook wel een gebeurtenisabonnee genoemd) is een onderdeel (toepassing of resource) dat gebeurtenissen van Event Grid kan ontvangen. Azure Functions kan bijvoorbeeld code uitvoeren als reactie op het nieuwe nummer dat wordt toegevoegd aan het Blob Storage-account. Abonnees kunnen bepalen welke gebeurtenissen ze willen verwerken en Event Grid zal elke geïnteresseerde abonnee efficiënt op de hoogte stellen wanneer er een nieuwe gebeurtenis beschikbaar is; geen polling vereist.
Typen gebeurtenisbronnen
De volgende Azure-resourcetypen kunnen gebeurtenissen genereren:
Azure-services die systeemonderwerpen ondersteunen
Hier volgen enkele Azure-services die systeemonderwerpen ondersteunen. Zie Systeemonderwerpen in Azure Event Gridvoor de volledige lijst met Azure-services die systeemonderwerpen ondersteunen.
- Azure-abonnementen en -resourcegroepen: abonnementen en resourcegroepen genereren gebeurtenissen met betrekking tot beheerbewerkingen in Azure. Wanneer een gebruiker bijvoorbeeld een virtuele machine maakt, genereert deze bron een gebeurtenis.
- Container register: De Azure Container Registry-service genereert gebeurtenissen wanneer images in het register worden toegevoegd, verwijderd of gewijzigd.
- Event Hubs: Event Hubs kunnen worden gebruikt voor het verwerken en opslaan van gebeurtenissen uit verschillende gegevensbronnen, meestal logboekregistratie of telemetrie. Event Hubs kan gebeurtenissen genereren naar Event Grid wanneer bestanden worden vastgelegd.
- Service Bus-: Service Bus kan gebeurtenissen genereren naar Event Grid wanneer er actieve berichten zijn zonder actieve listeners.
- Storage-accounts: Opslagaccounts kunnen gebeurtenissen genereren wanneer gebruikers blobs, bestanden, tabelvermeldingen of wachtrijberichten toevoegen. U kunt zowel blob-accounts als V2-accounts voor algemeen gebruik als gebeurtenisbronnen gebruiken.
- Media Services-: Media Services host video- en audiomedia en biedt geavanceerde beheerfuncties voor mediabestanden. Media Services kan gebeurtenissen genereren wanneer een coderingstaak wordt gestart of voltooid in een videobestand.
- Azure IoT Hub-: IoT Hub communiceert met en verzamelt telemetrie van IoT-apparaten. Het kan gebeurtenissen genereren wanneer dergelijke communicatie binnenkomt.
Zie Systeemonderwerpen in Azure Event Gridvoor meer informatie.
Aangepaste onderwerpen
U kunt aangepaste gebeurtenissen genereren met behulp van de REST API of met de Azure SDK op Java, GO, .NET, Node, Python en Ruby. U kunt bijvoorbeeld een aangepaste gebeurtenis maken in de web-apps-functie van Azure App Service. Dit kan gebeuren in de rol van de werknemer wanneer er een bericht uit een opslagwachtrij wordt opgehaald.
Deze diepgaande integratie met diverse gebeurtenisbronnen in Azure zorgt ervoor dat Event Grid gebeurtenissen kan distribueren die betrekking hebben op vrijwel elke Azure-resource.
Gebeurtenishandlers
De volgende objecttypen in Azure kunnen gebeurtenissen van Event Grid ontvangen en afhandelen:
- Azure Functions: aangepaste code die wordt uitgevoerd in Azure, zonder expliciete configuratie van een virtuele hostserver of container. Gebruik een Azure-functie als gebeurtenis-handler wanneer u een aangepast antwoord op de gebeurtenis wilt codeeren.
- Azure Logic Apps: Gebruik Logic Apps om bedrijfsprocessen te implementeren om Event Grid-gebeurtenissen te verwerken. In dit scenario maakt u geen webhook expliciet. De webhook wordt automatisch voor u gemaakt wanneer u de logische app configureert voor het afhandelen van gebeurtenissen uit Event Grid.
- Webhooks: een webhook is een web-API waarmee een pusharchitectuur wordt geïmplementeerd. U kunt gebeurtenissen ook verwerken met behulp van Azure Automation-runbooks. Webhooks ondersteunen het verwerken van gebeurtenissen met behulp van geautomatiseerde runbooks. U maakt een webhook voor het runbook en gebruikt vervolgens de webhookhandler.
- Event Hubs: Gebruik Event Hubs wanneer uw oplossing sneller gebeurtenissen uit Event Grid ontvangt dan de gebeurtenissen kunnen worden verwerkt. Zodra de gebeurtenissen zich in een Event Hub bevinden, kan uw toepassing gebeurtenissen van de Event Hub op een eigen schema verwerken.
- Service Bus-: u kunt een servicewachtrij of -onderwerp gebruiken als handler voor gebeurtenissen uit Event Grid.
- Storage-wachtrijen: Gebruik Queue Storage om gebeurtenissen te ontvangen die moeten worden opgehaald. U kunt Queue Storage gebruiken wanneer u een langlopend proces hebt dat te lang duurt om te reageren. Door gebeurtenissen naar Queue Storage te verzenden, kan de app gebeurtenissen op eigen schema ophalen en verwerken.
- Microsoft Power Automate: Power Automate host ook werkstromen, maar het is eenvoudiger voor niet-technisch personeel om te gebruiken.
Zie Event Handlersvoor meer informatie.
Moet u Event Grid gebruiken?
Gebruik Event Grid wanneer u deze functies nodig hebt:
- Eenvoud: Het is eenvoudig om bronnen te verbinden met abonnees in Event Grid.
- Geavanceerd filteren: Abonnementen hebben nauwe controle over de gebeurtenissen die ze van een onderwerp ontvangen.
- Fan-out: U kunt zich abonneren op een onbeperkt aantal eindpunten voor dezelfde gebeurtenissen en onderwerpen.
- betrouwbaarheid: Event Grid probeert de levering van gebeurtenissen maximaal 24 uur te herhalen voor elk abonnement.
- Betalen per gebeurtenis: Betaal alleen voor het aantal gebeurtenissen dat u verzendt.
Event Grid is een eenvoudig maar veelzijdig gebeurtenisdistributiesysteem. Gebruik het om discrete gebeurtenissen te leveren aan abonnees, die deze gebeurtenissen betrouwbaar en snel ontvangen. We hebben nog een berichtmodel om te onderzoeken; wat als we een grote stroom van gebeurtenissen willen leveren? In dit scenario is Event Grid geen goede oplossing omdat deze is ontworpen voor de levering van gebeurtenissen één voor één. In plaats daarvan moeten we overschakelen naar een andere Azure-service: Event Hubs.