Välja 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 ny låt laddas upp av en användare måste du meddela alla mobilappar som finns installerade på enheter för användare över hela världen som är intresserade av den genre.

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-lagringskonton eller Azure Media Services, till olika hanterare, till exempel Azure Functions eller Webhooks. Event Grid har skapats för att göra det enklare att skapa händelsebaserade och serverfria program i Azure.

Event Grid stöder de flesta Azure-tjänster som utgivare eller prenumerant och kan även användas med tjänster från tredje part. Det tillhandahåller ett dynamiskt skalbart meddelandesystem till låg kostnad som gör att utgivare kan meddela prenumeranter om statusändringar. I följande bild visas hur Azure Event Grid tar emot meddelanden från flera källor och distribuerar dem till händelsehanterare baserat på prenumeration.

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

  • Händelser – Det som hände.
  • Händelsekällor – där händelsen ägde rum.
  • Ämnen – Slutpunkten som utgivarna skickar händelser till.
  • Händelseprenumerationer – Den slutpunkt eller inbyggda mekanism som dirigerar 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 – Den app eller tjänst som reagerar på händelsen.

Följande bild visar ett Azure Event Grid placerat 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 of various event sources sending messages as topics to the Event Grid which in turn sends messages to subscribing event handlers.

Vad är en händelse?

Händelser är datameddelanden som passerar genom Event Grid och som beskriver vad som har inträffat. Varje händelse är självständig, kan vara upp till 64 KB och innehåller flera olika typer av information baserat på ett schema som definierats i Event Grid:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]
Fält beskrivning
Avsnitt Den fullständiga resurssökvägen till händelsekällan. Event Grid ger det här värdet.
Ämne Utgivardefinierad sökväg till händelseobjektet.
id Den unika identifieraren för händelsen.
Händelsetyp En av de registrerade händelsetyperna för den här händelsekällan. Du kan skapa filter mot det här värdet, CustomerCreatedtill exempel , BlobDeleted, HttpRequestReceived, osv.
Händelsetid 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 lastTimeModified värdet. Eller en händelse i Event Hubs har URL:en för Capture-filen. Det här fältet är valfritt.
Dataversion Dataobjektets schemaversion. Utgivaren definierar schemaversion.
Metadataversion Händelsemetadatans schemaversion. Event Grid definierar schemat för de översta egenskaperna. Event Grid ger det här värdet.

Dricks

Event Grid skickar en händelse för att ange något har hänt eller ändrats. Men det faktiska objektet som har ändrats är inte del av informationen om händelsen. I stället skickas en URL eller identifierare ofta för att hänvisa 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 relaterat till en eller flera händelsetyper. Till exempel är Azure Storage händelsekällan för händelser som skapas i blobbar. IoT Hub är händelsekällan för händelser som har skapats på enheter. Ditt program är händelsekällan för anpassade händelser som du definierar. Vi kommer snart att titta närmare på händelsekällor.

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 utfärda händelser via Event Grid. Händelsekällan är den specifika tjänst som genererar händelsen för utgivaren. Även om de två termerna skiljer sig något åt använder vi för den här lektionen "publisher" och "event source" omväxlande för att representera entiteten som skickar meddelandet till Event Grid.

Vad är ett händelseämne?

Händelseämnen samlar händelser i grupper. Ämnen som representeras av en offentlig slutpunkt och är platsen som händelsekällan skickar händelser till. När du skapar ditt program bör du bestämma du hur många ämnen du vill skapa. Större lösningar skapar anpassade ämnen för varje händelsekategori medan mindre lösningar kan skicka alla händelser till samma ämne. Tänk dig ett program som skickar händelser som handlar om att ändra användarkonton och bearbeta beställningar. Det är osannolikt alla händelsehanteraren vill ha båda händelsekategorier. Skapa två anpassade ämnen och låt händelsehanteraren prenumerera på det mest relevanta. Händelseprenumeranter kan filtrera händelsetyper som de vill ta emot från ett visst ämne.

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

Systemämnen

Systemämnen är inbyggda ämnen som tillhandahålls av Azure-tjänster. Du ser inte systemämnen i Azure-prenumerationen eftersom utgivaren äger ämnena, men du kan prenumerera på dem. Om du vill prenumerera anger du information om resursen som du vill ta emot händelser från. Så länge som du har åtkomst till resursen, kan du prenumerera på händelser.

Anpassade ämnen

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

Vad är en händelseprenumeration?

Händelseprenumerationer definierar vilka händelser som händelsehanteraren vill ta emot för ett visst ämne. En prenumeration kan även filtrera händelserna efter typ eller ämne så att du kan vara säker på att en händelsehanterare endast tar emot relevanta händelser.

Vad är en händelsehanterare?

En händelsehanterare (kallas ibland en ”händelseprenumerant”) är en komponent (program och resurs) som kan ta emot händelser från Event Grid. Till exempel kan Azure Functions köra kod som svar på den nya låt som läggs till i Blob-lagringskontot. 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 Systemavsnitt i Azure Event Grid.

  • Azure-prenumerationer och resursgrupper: Prenumerationer och resursgrupper genererar händelser som är relaterade till hanteringsåtgärder i Azure. När en användare skapar en virtuell dator genererar exempelvis den här källan en händelse.
  • Behållarregister: Tjänsten Azure Container Registry skapar händelser när bilder i registret läggs till, tas bort eller ändras.
  • Händelsehubbar: Händelsehubbar 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ändarna lägger till blobbar, filer, tabellposter eller kömeddelanden. Du kan använda både blobkonton och konton för generell användning V2 som händelsekällor.
  • Media Services: Media Services är värd för video- och ljudmedia och innehåller avancerade hanteringsfunktioner för mediefiler. Media Services kan generera händelser när ett kodningsjobb startas eller slutförs i en videofil.
  • Azure IoT Hub: IoT Hub kommunicerar med och samlar in telemetri från IoT-enheter. Den kan generera händelser när sådan kommunikation tas emot.

Mer information finns i Systemavsnitt 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 Web Apps-funktionen i Azure App Service. Detta kan inträffa i arbetsrollen när den tar emot ett meddelande från en lagringskö.

Den här omfattande integreringen med olika händelsekällor inom Azure säkerställer att Event Grid kan distribuera händelser som är relaterade till nästan vilken Azure-resurs som helst.

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 en 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.

Mer information finns i Händelsehanterare.

Bör du använda Event Grid?

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

  • Enkelhet: Det är enkelt att ansluta källor till prenumeranter i Event Grid.
  • Avancerad filtrering: Prenumerationer har noggrann kontroll över de händelser som de tar emot från ett ämne.
  • Sprid ut:Du kan prenumerera på ett obegränsat antal slutpunkter till samma händelser och ämnen.
  • Tillförlitlighet Event Grid försöker leverera händelser 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 och mångsidigt distributionssystem för händelser. Du kan använda det till att leverera distinkta händelser till prenumeranter, som får händelserna på ett pålitligt och snabbt sätt. Vi har ytterligare en meddelandemodell att undersöka. vad händer om vi vill leverera en stor ström av händelser? I det här scenariot är inte Event Grid den bästa lösningen eftersom den är utformad för leverans av en händelse i taget. I stället vänder vi oss till en annan Azure-tjänst: Event Hubs.