Välj Azure Event Grid

Slutförd

Många program använder en publiceringsprenumereringsmodell för att meddela distribuerade komponenter om att något har hänt eller att något objekt har ändrats. Anta att du har ett program för musikdelning med ett webb-API som körs i Azure. När en användare laddar upp en ny låt måste du meddela alla mobilappar som är installerade på användarenheter runt om i världen som är intresserade av den genren.

I den här arkitekturen behöver ljudfilsutgivaren inte känna till någon av prenumeranterna som är intresserade av den delade musiken. Dessutom vill vi ha en en-till-många-relation där vi kan ha flera prenumeranter som kan välja om de är intresserade av den här nya låten. Azure Event Grid är en perfekt lösning för den här typen av arkitektur.

Vad är Azure Event Grid?

Azure Event Grid är en fullständigt hanterad händelsedirigeringstjänst som körs ovanpå Azure Service Fabric-. Event Grid distribuerar händelser från olika källor, till exempel Azure Blob Storage-konton eller Azure Media Services, till olika hanterare, till exempel Azure Functions- eller Webhooks. Event Grid skapades för att göra det enklare att skapa händelsebaserade och serverlösa program i Azure.

Event Grid stöder de flesta Azure-tjänster som utgivare eller prenumeranter och kan användas med tjänster från tredje part. Det ger ett dynamiskt skalbart meddelandesystem med låg kostnad som gör det möjligt för utgivare att meddela prenumeranter om en statusändring. Följande bild visar Hur Azure Event Grid tar emot meddelanden från flera källor och distribuerar dem till händelsehanterare baserat på prenumeration.

Det finns flera begrepp i Azure Event Grid som ansluter en källa till en prenumerant:

  • Händelser: Vad hände?
  • Händelsekällor: Var händelsen ägde rum?
  • Topics: Slutpunkt där utgivare skickar händelser.
  • Händelseprenumerationer: Slutpunkten eller den inbyggda mekanismen för att dirigera händelser, ibland till flera hanterare. Hanterare använder också prenumerationer för att filtrera inkommande händelser på ett intelligent sätt.
  • Händelsehanterare: Appen eller tjänsten som reagerar på händelsen.

Följande bild visar ett Azure Event Grid positionerat mellan flera händelsekällor och flera händelsehanterare. Händelsekällorna skickar händelser till Event Grid och Event Grid vidarebefordrar relevanta händelser till prenumeranterna. Event Grid använder ämnen för att bestämma vilka händelser som ska skickas till vilka hanterare. Händelsekällor taggar varje händelse med ett eller flera ämnen, och händelsehanterare prenumererar på de ämnen som de är intresserade av.

Diagram över olika händelsekällor som skickar meddelanden som ämnen till Event Grid som i sin tur skickar meddelanden till prenumererande händelsehanterare.

Vad är en händelse?

Händelser är de datameddelanden som skickas via Event Grid som beskriver vad som har ägt rum. Varje händelse är fristående, kan vara upp till 64 kB och innehåller flera informationsdelar baserat på ett schema som definierats av Event Grid eller ett Cloud-händelseschema.

Här är Event Grid-händelseschemat:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]
Fält Beskrivning
ämne Den fullständiga resurssökvägen till händelsekällan. Event Grid tillhandahåller det här värdet.
ämne Utgivardefinierad sökväg till ämnet för händelsen.
ID Den unika identifieraren för händelsen.
eventType En av de registrerade händelsetyperna för den här händelsekällan. Du kan skapa filter mot det här värdet, till exempel CustomerCreated, BlobDeleted, HttpRequestReceivedosv.
evenemangstid Den tid då händelsen genererades baserat på leverantörens UTC-tid.
data Specifik information som är relevant för typen av händelse. Till exempel: en händelse om en ny fil som skapas i Azure Storage innehåller information om filen, till exempel värdet lastTimeModified. Eller så har en Event Hubs-händelse URL:en för avbildningsfilen. Det här fältet är valfritt.
dataVersion Dataobjektets schemaversion. Utgivaren definierar schemaversionen.
metadataVersion Händelsemetadatans schemaversion. Event Grid definierar schemat för egenskaperna på den översta nivån. Event Grid tillhandahåller det här värdet.

Tips

Event Grid skickar en händelse som anger att något har hänt eller ändrats. Det faktiska objektet som ändrades är dock inte en del av händelsedata. I stället skickas ofta en URL eller identifierare för att referera till det ändrade objektet.

Vad är en händelsekälla?

Händelsekällor ansvarar för att skicka händelser till Event Grid. Varje händelsekälla är relaterad till en eller flera händelsetyper. Azure Storage är till exempel händelsekällan för blob-skapade händelser. IoT Hub är händelsekällan för enhetsskapade händelser. Ditt program är händelsekällan för anpassade händelser som du definierar. Vi tittar närmare på händelsekällorna om en stund.

Azure Event Grid har begreppet händelseutgivare som ofta förväxlas med händelsekällan. En händelseutgivare är den användare eller organisation som bestämmer sig för att skicka händelser till Event Grid. Microsoft publicerar till exempel händelser för flera Azure-tjänster. Du kan publicera händelser från ditt eget program. Organisationer som är värdar för tjänster utanför Azure kan publicera händelser via Event Grid. Den händelsekällan är den specifika tjänst som genererar händelsen för utgivaren. Även om de två termerna skiljer sig något, använder vi för den här lektionen "utgivare" och "händelsekälla" omväxlande för att representera den entitet som skickar meddelandet till Event Grid.

Vad är ett händelseämne?

Händelseämnen kategoriserar händelser i grupper. Ämnen representeras av en offentlig slutpunkt och är där händelsekällan skickar händelser till. När du utformar ditt program kan du bestämma hur många ämnen som ska skapas. Större lösningar skapar ett anpassat ämne för varje kategori av relaterade händelser, medan mindre lösningar kan skicka alla händelser till ett enda ämne. Tänk dig till exempel ett program som skickar händelser som rör ändring av användarkonton och bearbetning av beställningar. Det är osannolikt att någon händelsehanterare vill ha båda händelsekategorierna. Skapa två anpassade ämnen och låt händelsehanterare prenumerera på det som intresserar dem. Händelseprenumeranter kan filtrera efter de händelsetyper de vill ha från ett visst ämne.

Ämnen är indelade i system ämnen och anpassade ämnen.

Systemämnen

Ett systemämne i Event Grid representerar en eller flera händelser som publicerats av Azure-tjänster som Azure Storage och Azure Event Hubs. Ett systemämne kan till exempel representera alla blobhändelser eller endast blobar som skapats och blobborttagningshändelser som publicerats för ett specifikt lagringskonto. I det här exemplet, när en blob laddas upp till lagringskontot, publicerar Azure Storage-tjänsten en blob skapad händelse till systemämnet i Event Grid, som sedan vidarebefordrar händelsen till ämnets prenumeranter som tar emot och bearbetar händelsen.

Du kan prenumerera på händelser för en resurs, till exempel ett Azure Storage-konto, och Event Grid skapar automatiskt ett systemämne för lagringskontot åt dig. Du kan också skapa ett systemämne och skapa en prenumeration på ämnet manuellt i Azure-portalen.

Anpassade ämnen

Anpassade ämnen är program och ämnen från tredje part. När du skapar eller tilldelas åtkomst till ett anpassat ämne visas det anpassade ämnet i din prenumeration.

Vad är en händelseprenumeration?

Händelseprenumerationer definierar vilka händelser i ett ämne som en händelsehanterare vill ta emot. En prenumeration kan också filtrera händelser efter typ eller ämne, så att du kan se till att en händelsehanterare bara tar emot relevanta händelser.

Vad är en händelsehanterare?

En händelsehanterare (kallas ibland för en händelseprenumerant) är en komponent (program eller resurs) som kan ta emot händelser från Event Grid. Azure Functions kan till exempel köra kod som svar på den nya låten som läggs till i Blob Storage-kontot. Prenumeranter kan bestämma vilka händelser de vill hantera och Event Grid meddelar effektivt varje intresserad prenumerant när en ny händelse är tillgänglig. ingen avsökning krävs.

Typer av händelsekällor

Följande Azure-resurstyper kan generera händelser:

Azure-tjänster som stöder systemämnen

Här följer några Azure-tjänster som stöder systemämnen. En fullständig lista över Azure-tjänster som stöder systemämnen finns i System-ämnen i Azure Event Grid.

  • Azure-prenumerationer och resursgrupper: Prenumerationer och resursgrupper genererar händelser relaterade till hanteringsåtgärder i Azure. När en användare till exempel skapar en virtuell dator genererar den här källan en händelse.
  • Container Registry: Azure Container Registry-tjänsten genererar händelser när avbildningar i registret läggs till, tas bort eller ändras.
  • Event Hubs: Event Hubs kan användas för att bearbeta och lagra händelser från olika datakällor, vanligtvis loggning eller telemetrirelaterade. Event Hubs kan generera händelser till Event Grid när filer registreras.
  • Service Bus-: Service Bus kan generera händelser till Event Grid när det finns aktiva meddelanden utan aktiva lyssnare.
  • Lagringskonton: Lagringskonton kan generera händelser när användare lägger till blobar, filer, tabellposter eller kömeddelanden. Du kan använda både blobkonton och V2-konton för generell användning som händelsekällor.
  • Media Services: Media Services är värd för video- och ljudmedier och tillhandahåller avancerade hanteringsfunktioner för mediefiler. Media Services kan generera händelser när ett kodningsjobb startas eller slutförs på en videofil.
  • Azure IoT Hub: IoT Hub kommunicerar med och samlar in telemetri från IoT-enheter. Det kan generera händelser när sådan kommunikation kommer.

Mer information finns i avsnittet System i Azure Event Grid.

Anpassade ämnen

Du kan generera anpassade händelser med hjälp av REST-API:et eller med Azure SDK på Java, GO, .NET, Node, Python och Ruby. Du kan till exempel skapa en anpassad händelse i funktionen Web Apps i Azure App Service. Det kan inträffa i arbetarens roll när den hämtar ett meddelande från en lagringskö.

Den här djupa integreringen med olika händelsekällor i Azure säkerställer att Event Grid kan distribuera händelser som är relaterade till nästan alla Azure-resurser.

Händelsehanterare

Följande objekttyper i Azure kan ta emot och hantera händelser från Event Grid:

  • Azure Functions: Anpassad kod som körs i Azure, utan att det behövs någon explicit konfiguration av en virtuell värdserver eller container. Använd en Azure-funktion som händelsehanterare när du vill koda ett anpassat svar på händelsen.
  • Azure Logic Apps: Använd Logic Apps för att implementera affärsprocesser för att bearbeta Event Grid-händelser. Du skapar inte en webhook explicit i det här scenariot. Webhooken skapas automatiskt när du konfigurerar logikappen för att hantera händelser från Event Grid.
  • Webhooks: En webhook är ett webb-API som implementerar en push-arkitektur. Du kan också bearbeta händelser med hjälp av Azure Automation-runbooks. Webhooks stöder bearbetning av händelser med hjälp av automatiserade runbooks. Du skapar en webhook för runbooken och använder sedan webhook-hanteraren.
  • Event Hubs: Använd Event Hubs när din lösning hämtar händelser från Event Grid snabbare än den kan bearbeta händelserna. När händelserna finns i en händelsehubb kan ditt program bearbeta händelser från händelsehubben enligt sitt eget schema.
  • Service Bus-: Du kan använda en tjänstkö eller ett ämne som hanterare för händelser från Event Grid.
  • Lagringsköer: Använd Queue Storage för att ta emot händelser som måste hämtas. Du kan använda Queue Storage när du har en tidskrävande process som tar för lång tid att svara på. Genom att skicka händelser till Queue Storage kan appen hämta och bearbeta händelser enligt sitt eget schema.
  • Microsoft Power Automate: Power Automate är också värd för arbetsflöden, men det är enklare för icke-teknisk personal att använda.

För mer information, se händelsehanterare.

Ska du använda Event Grid?

Använd Event Grid när du behöver följande funktioner:

  • Enkelhet: Det är enkelt att ansluta källor till prenumeranter i Event Grid.
  • Avancerad filtrering: Prenumerationer har nära kontroll över de händelser som de får från ett ämne.
  • Fan-out: Du kan prenumerera på ett obegränsat antal slutpunkter för samma händelser och ämnen.
  • Tillförlitlighet: Event Grid försöker leverera händelser igen i upp till 24 timmar för varje prenumeration.
  • Betala per händelse: Betala endast för antalet händelser som du överför.

Event Grid är ett enkelt men mångsidigt system för händelsedistribution. Använd den för att leverera diskreta händelser till prenumeranter, som tar emot dessa händelser på ett tillförlitligt och snabbt sätt. Vi har ytterligare en meddelandemodell att undersöka. vad händer om vi vill leverera en stor ström händelser? I det här scenariot är Event Grid inte en bra lösning eftersom det är utformat för leverans en-händelse i taget. I stället måste vi vända oss till en annan Azure-tjänst: Event Hubs.