Cloud & IT Cert Prep · leksjon

Event Grid og hendelsesdrevet arkitektur

Rout hendelser fra Azure-tjenester og egendefinerte publisører med Event Grid, distribuer dem til flere abonnenter, og sammenlign Event Grid med Event Hubs og Service Bus.

Leksjon 4 av 413 trinn

Event Grid og hendelsesdrevet arkitektur er en gratis leksjon i Cloud & IT Cert Prep på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cloud & IT Cert Prep, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hva er hendelsesdrevet arkitektur?

I en hendelsesdrevet arkitektur kommuniserer komponenter ved å publisere og abonnere på hendelser, i stedet for å kalle hverandre direkte. En komponent (produsent) genererer en hendelse når noe bemerkelsesverdig skjer – en fil lastes opp, en ordre legges inn eller en enhet sender en måling. Andre komponenter (abonnenter) reagerer på hendelser de er interessert i, uavhengig av hverandre og asynkront. Dette kobler produsenter og forbrukere fra hverandre, noe som forbedrer skalerbarhet, robusthet og vedlikeholdbarhet.

Hva er Azure Event Grid?

Azure Event Grid er en fullstendig administrert tjeneste for hendelsesruting som leverer hendelser fra kilder (utgivere) til behandlere (abonnenter) ved hjelp av en push-modell. Event Grid er utviklet for reaktive, diskrete hendelser – noe har blitt endret, og du må reagere umiddelbart. Tjenesten garanterer levering minst én gang med automatisk nytt forsøk, støtter filtrering slik at abonnenter bare mottar relevante hendelser, og kan rute hendelser til Azure Functions, Logic Apps, webhooks, Event Hubs og Service Bus-køer.

Event Grid-emner og hendelsesabonnementer

Utgivere sender hendelser til et Event Grid-emne. Abonnenter oppretter hendelsesabonnementer på et emne og angir et endepunkt og eventuelle filterregler. Ett emne kan ha flere abonnementer – hvert abonnement mottar en uavhengig kopi av hendelser som samsvarer. Azure-tjenester som Blob Storage, Resource Manager, Service Bus og Azure Container Registry er innebygde hendelseskilder med systememner som ikke krever ytterligere konfigurasjon.

# Create a custom Event Grid topic
az eventgrid topic create \
  --name MyEventTopic \
  --resource-group MyRG \
  --location eastus

# Create a subscription routing to an Azure Function
az eventgrid event-subscription create \
  --name myFunctionSub \
  --source-resource-id '/subscriptions/.../providers/Microsoft.EventGrid/topics/MyEventTopic' \
  --endpoint '/subscriptions/.../providers/Microsoft.Web/sites/myFunctionApp/functions/EventHandler'

Hendelsesskjema

Hendelser som publiseres til Event Grid, følger et standardisert JSON-skjema med obligatoriske felt: id (unik identifikator), eventType (for eksempel Microsoft.Storage.BlobCreated), subject (bane til hendelsesressursen), eventTime (ISO 8601-tidsstempel), dataVersion og data (hendelsesspesifikk nyttelast). Event Grid støtter også CloudEvents-skjemaet (CNCF-standard) for samhandling med andre hendelsesplattformer.

// Event Grid event payload (Event Grid schema)
[
  {
    'id': 'b781910b-3000-4f19-a4c2-b6b9c4ca7a12',
    'eventType': 'Microsoft.Storage.BlobCreated',
    'subject': '/blobServices/default/containers/uploads/blobs/photo.jpg',
    'eventTime': '2025-01-15T12:30:00.000Z',
    'data': {
      'api': 'PutBlockList',
      'url': 'https://mystorageacct.blob.core.windows.net/uploads/photo.jpg',
      'contentType': 'image/jpeg',
      'contentLength': 524288
    },
    'dataVersion': '',
    'metadataVersion': '1'
  }
]

Hendelsesfiltrering

Hendelsesabonnementer støtter filtrering for å redusere mengden støy hos abonnenten. Du kan filtrere etter hendelsestype (motta bare BlobCreated, ikke BlobDeleted), prefiks eller suffiks for emnet (bare blobber i en bestemt container), eller avanserte filtre på alle felt i hendelsesdataene ved hjelp av operatorer som StringContains, NumberGreaterThan og BoolEquals. Filtreringen skjer på serversiden, slik at abonnenter bare mottar hendelser som oppfyller kriteriene deres.

# Subscribe to BlobCreated events for .jpg files only
az eventgrid event-subscription create \
  --name jpgImageSub \
  --source-resource-id '/subscriptions/.../storageAccounts/mystorageaccount' \
  --endpoint 'https://myfunction.azurewebsites.net/api/ProcessImage' \
  --included-event-types 'Microsoft.Storage.BlobCreated' \
  --subject-ends-with '.jpg'

Event Grid kontra Event Hubs kontra Service Bus

Tre Azure-tjenester håndterer hendelser og meldinger – velg ut fra scenariet ditt. Event Grid brukes til reaktiv hendelsesruting (lavt volum, diskrete og reaktive hendelser – for eksempel varsler om ressursendringer). Event Hubs brukes til hendelsesstrømming med høy gjennomstrømming (millioner av hendelser per sekund, telemetri og datapipelines for stordata). Service Bus brukes til bedriftsmeldinger med rekkefølge, deduplisering, meldinger som legges i kø for senere behandling, og transaksjoner (ordrebehandling og finansielle transaksjoner).

// Decision guide:
// Event Grid  — 'Something happened, react to it'
//               Azure resource events, webhooks, low-latency fan-out
//               Price: per event (cheap for low volume)

// Event Hubs  — 'Capture a firehose of streaming data'
//               IoT telemetry, log aggregation, real-time analytics
//               Price: per throughput unit + capture

// Service Bus — 'Reliable message delivery between services'
//               Order processing, workflow steps, dead-letter queues
//               Price: per operation + messaging units

Publisere egendefinerte hendelser

Publiser egendefinerte hendelser til et Event Grid-emne ved hjelp av en enkel HTTP POST-forespørsel med tilgangsnøkkelen til emnet. Alle tjenester eller applikasjoner som kan sende HTTP-forespørsler, kan publisere hendelser. Dermed blir det enkelt å generere hendelser fra lokale applikasjoner, tredjepartstjenester eller Azure-tjenester som ikke har innebygd støtte for Event Grid. Du kan samle opptil 1 MB med hendelser i hver POST for bedre effektivitet.

# Get the topic endpoint and key
TOPIC_ENDPOINT=$(az eventgrid topic show --name MyEventTopic --resource-group MyRG --query endpoint -o tsv)
TOPIC_KEY=$(az eventgrid topic key list --name MyEventTopic --resource-group MyRG --query key1 -o tsv)

# Publish a custom event
curl -X POST $TOPIC_ENDPOINT \
  -H 'Content-Type: application/json' \
  -H "aeg-sas-key: $TOPIC_KEY" \
  -d '[{
    "id": "event-001",
    "eventType": "Contoso.OrderPlaced",
    "subject": "/orders/ORD-12345",
    "eventTime": "2025-01-15T12:00:00Z",
    "data": { "orderId": "ORD-12345", "total": 99.99 },
    "dataVersion": "1.0"
  }]'

Retningslinjer for dead-lettering og nye forsøk

Hvis et leveringsforsøk for en hendelse mislykkes (abonnenten returnerer en HTTP-status utenfor 2xx), prøver Event Grid på nytt med eksponentiell tilbakekobling og tilfeldig variasjon i opptil 24 timer (kan konfigureres til opptil 72 timer), med maksimalt 30 forsøk. Når alle forsøkene er brukt opp, kan Event Grid legge hendelser som ikke ble levert, i en dead-letter-kø i en Azure Blob Storage-container for manuell undersøkelse. Konfigurer dead-lettering når pålitelig hendelseslevering er kritisk, og du trenger å revidere eller behandle mislykkede hendelser på nytt.

# Configure dead-letter storage and retry for a subscription
az eventgrid event-subscription update \
  --name myFunctionSub \
  --source-resource-id '/subscriptions/.../topics/MyEventTopic' \
  --deadletter-endpoint '/subscriptions/.../storageAccounts/mystg/blobServices/default/containers/deadletter' \
  --max-delivery-attempts 30 \
  --event-ttl 1440  # 24 hours in minutes

Oversikt over Azure Event Hubs

Azure Event Hubs er en distribuert plattform for datastrømming som kan motta og behandle millioner av hendelser per sekund. Den bruker en partisjonert forbrukermodell – hendelser fordeles på partisjoner, og hver forbrukergruppe leser hendelser uavhengig av de andre, i sitt eget tempo. Dette gjør det mulig for flere forbrukere å behandle den samme strømmen uten koordinering. Vanlige bruksområder er innsamling av IoT-telemetri, samling av applikasjonslogger, analyse av klikkstrømmer og datapipelines for sanntidsinstrumentbord.

# Create an Event Hubs namespace and hub
az eventhubs namespace create \
  --name myEventHubNS \
  --resource-group MyRG \
  --location eastus \
  --sku Standard

az eventhubs eventhub create \
  --name telemetry \
  --namespace-name myEventHubNS \
  --resource-group MyRG \
  --partition-count 8 \
  --message-retention 3  # Days to retain events

Azure Service Bus for pålitelig meldingsbehandling

Azure Service Bus er en meldingsmegler for bedrifter som tilbyr køer (punkt-til-punkt) og emner med abonnementer (publisering-abonnement). I motsetning til Event Grid (send-og-glem) og Event Hubs (strømming) garanterer Service Bus ordnet levering (FIFO-køer), deteksjon av duplikater, dead-letter-køer for behandlingsfeil, meldingsøkter for gruppert behandling og transaksjoner – alt dette er viktig for arbeidsflyter for økonomi- og ordrebehandling.

# Create a Service Bus namespace and queue
az servicebus namespace create \
  --name myServiceBusNS \
  --resource-group MyRG \
  --location eastus \
  --sku Standard

az servicebus queue create \
  --name order-processing \
  --namespace-name myServiceBusNS \
  --resource-group MyRG \
  --enable-dead-lettering-on-message-expiration true \
  --max-delivery-count 10  # Move to dead-letter after 10 failed attempts

Praktisk hendelsesdrevet mønster: filbehandling

Et vanlig hendelsesdrevet mønster i Azure er at en bruker laster opp en fil til Blob Storage, som utløser en BlobCreated-hendelse til Event Grid. Event Grid ruter hendelsen til en Azure Function som behandler filen (endrer størrelsen på et bilde, trekker ut tekst eller validerer data) og skriver resultatet til Azure SQL Database. Hvis behandlingen mislykkes, legges hendelsen i en dead-letter-kø i en lagringscontainer. Hele denne pipelinen krever ingen polling og ingen vedvarende databehandling når den er inaktiv.

// Azure Function: process image on BlobCreated event
module.exports = async function (context, eventGridEvent) {
  const blobUrl = eventGridEvent.data.url;
  const blobName = eventGridEvent.subject.split('/blobs/').pop();

  context.log('Processing image:', blobName);

  // Process via Cognitive Services Vision API
  const tags = await analyzeImage(blobUrl);

  // Write metadata to Cosmos DB via output binding
  context.bindings.cosmosOutput = {
    id: blobName,
    tags,
    processedAt: new Date().toISOString()
  };

  context.log('Processing complete for:', blobName);
};

Kort kontroll

Test forståelsen din av Microsoft Azure Fundamentals-konsepter (AZ-900) fra denne leksjonen.

Oppsummering av leksjonen

I denne leksjonen har du lært at Azure Event Grid ruter diskrete hendelser fra utgivere til abonnenter ved hjelp av push-levering, filtrering og dead-lettering, hva som er den viktigste forskjellen mellom Event Grid (reaktive hendelser), Event Hubs (strømming) og Service Bus (pålitelig meldingsbehandling for bedrifter), og hvordan du bygger hendelsesdrevne pipelines ved å koble Blob Storage-hendelser via Event Grid til Azure Functions. Neste gang skal vi utforske Azure DevOps-tjenester.

Gratis å komme i gang

Lær deg Cloud & IT Cert Prep med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
150
Leksjoner
600

Ofte stilte spørsmål

Er leksjonen «Event Grid og hendelsesdrevet arkitektur» gratis?

Ja – hele teksten i «Event Grid og hendelsesdrevet arkitektur» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cloud & IT Cert Prep-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hva lærer jeg i «Event Grid og hendelsesdrevet arkitektur»?

Rout hendelser fra Azure-tjenester og egendefinerte publisører med Event Grid, distribuer dem til flere abonnenter, og sammenlign Event Grid med Event Hubs og Service Bus. Du øver på Cloud & IT Cert Prep med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Cloud & IT Cert Prep?

Ingen tidligere erfaring er nødvendig. Cloud & IT Cert Prep på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Event Grid og hendelsesdrevet arkitektur»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Cloud & IT Cert Prep-leksjonen?

Ja. Alle Cloud & IT Cert Prep-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Azure Functions-utløsere og bindinger
  2. Durable Functions for tilstandsbevisste arbeidsflyter
  3. Azure Logic Apps
  4. Event Grid og hendelsesdrevet arkitektur
← Tilbake til Cloud & IT Cert Prep