Volba Azure Event Gridu
Řada aplikací používá model publikování a odběru k oznámení distribuovaných komponent, že se něco stalo nebo že se nějaký objekt změnil. Předpokládejme, že máte aplikaci pro sdílení hudby s webovým rozhraním API, která běží v Azure. Když některý uživatel nahraje novou skladbu, potřebujete to oznámit všem mobilním aplikacím nainstalovaným na uživatelských zařízeních po celém světě pro uživatele, kteří mají zájem o daný žánr.
V této architektuře nemusí vydavatel zvukových souborů vědět o žádném odběrateli, kteří mají zájem o sdílenou hudbu. Chceme mít také vztah 1:N, kde můžeme mít více odběratelů, kteří se můžou volitelně rozhodnout, jestli mají zájem o tuto novou skladbu. Pro tento typ architektury je ideálním řešením Azure Event Grid.
Co je Azure Event Grid?
Azure Event Grid je plně spravovaná služba směrování událostí spuštěná nad službou Azure Service Fabric. Event Grid distribuuje události z různých zdrojů, jako jsou účty Azure Blob Storage nebo služba Azure Media Services, různým obslužným rutinám, například službě Azure Functions nebo webhookům. Event Grid je navržený tak, aby v Azure usnadnil vytváření aplikací založených na událostech a bez serverů.
Event Grid podporuje většinu služeb Azure jako vydavatele nebo odběratele a lze ho používat se službami jiných dodavatelů. Nabízí dynamicky škálovatelný a finančně dostupný systém zasílání zpráv, který umožňuje vydavatelům informovat uživatele o změně stavu. Následující obrázek znázorňuje, jak Azure Event Grid přijímá zprávy od několika zdrojů a distribuuje je obslužným rutinám události na základě předplatného.
V Azure Event Gridu existuje několik konceptů pro propojení zdroje s odběratelem:
- Události: Co se stalo.
- Zdroje událostí: Kde k události došlo.
- Témata: Koncový bod, kam vydavatelé odesílají události.
- Odběry událostí: Koncový bod nebo integrovaný mechanismus pro směrování událostí, někdy i do více obslužných rutin. Obslužné rutiny také používají odběry k inteligentnímu filtrování příchozích událostí.
- Obslužné rutiny událostí: Aplikace nebo služba reagující na danou událost.
Následující obrázek znázorňuje pozici Azure Event Gridu mezi několika zdroji událostí a několika obslužnými rutinami událostí. Zdroje událostí odesílají události do Event Gridu a Event Grid předá příslušné události odběratelům. Event Grid používá témata k rozhodování o tom, které události se mají odesílat do kterých obslužných rutin. Zdroje událostí označí každou událost jedním nebo více tématy a obslužné rutiny událostí se přihlásí k odběru témat, která vás zajímají.
Co je událost?
Události jsou datové zprávy procházející přes Event Grid, které popisují, k čemu došlo. Každá událost je samostatná, může mít velikost až 64 kB a obsahuje několik informací na základě schématu, které definuje Event Grid:
[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]
Pole | Popis |
---|---|
topic | Úplná cesta prostředku ke zdroji události. Tuto hodnotu poskytuje Event Grid. |
subject | Cesta k předmětu události, kterou definuje vydavatel. |
id | Jedinečný identifikátor události. |
eventType | Jeden z registrovaných typů události pro tento zdroj události. Můžete vytvořit filtry pro tuto hodnotu, CustomerCreated například , BlobDeleted , , HttpRequestReceived atd. |
eventTime | Čas, kdy byla událost vygenerována, na základě času UTC poskytovatele. |
data | Určité informace, které jsou relevantní pro daný typ události. Například: Událost týkající se nového souboru vytvořeného ve službě Azure Storage obsahuje podrobnosti o souboru, například o hodnotě lastTimeModified . Událost služby Event Hubs zase obsahuje adresu URL souboru Capture. Toto pole je nepovinné. |
dataVersion | Verze schématu datového objektu. Verzi schématu definuje vydavatel. |
metadataVersion | Verze schématu metadat události. Schéma vlastností nejvyšší úrovně definuje Event Grid. Tuto hodnotu poskytuje Event Grid. |
Tip
Event Grid odešle událost, která indikuje, že se něco stalo nebo změnilo. Skutečný objekt, který se změnil, ale není součástí dat události. Místo něho se často jako odkaz na změněný objekt předává adresa URL nebo identifikátor.
Co je zdroj události?
Za odesílání událostí do Event Gridu zodpovídají zdroje událostí. Každý zdroj události souvisí s jedním nebo více typy událostí. Například Azure Storage je zdroj události pro události vytvořené objektem blob. IoT Hub je zdroj události pro události vytvořené zařízením. Vaše aplikace je zdroj události pro vlastní události, které definujete. Na zdroje událostí se podrobněji podíváme za chvíli.
Azure Event Grid má koncept vydavatele událostí, který se často zaměňuje se zdrojem událostí. Vydavatelem události je uživatel nebo organizace, která se rozhodne odesílat události do Event Gridu. Například společnost Microsoft publikuje události pro několik služeb Azure. Můžete publikovat události z vaší vlastní aplikace. Organizace, které hostují služby mimo Azure, můžou publikovat události přes Event Grid. Zdrojem událostí je konkrétní služba, která generuje událost pro daného vydavatele. I když se tyto dva termíny mírně liší, pro účely této lekce použijeme "vydavatele" a "zdroj událostí" zaměnitelně k reprezentaci entity, která odesílá zprávu do Event Gridu.
Co je téma události?
Témata událostí kategorizují události do skupin. Témata zastupuje veřejný koncový bod. Do tohoto umístění zdroj události odesílá události to. Při návrhu aplikace můžete rozhodnout, kolik témat se má vytvořit. V rozsáhlejších řešeních se bude vytvářet vlastní téma pro každou kategorii souvisejících událostí, zatímco v menších řešeních se můžou všechny události odesílat do jediného tématu. Představme si například aplikaci, která odesílá události související s úpravami uživatelských účtů a zpracováním objednávek. Není pravděpodobné, že nějaká obslužná rutina události chce přijímat obě kategorie událostí. Vytvořte dvě vlastní témata a nechte obslužné rutiny událostí odebírat to téma, které je zajímá. Odběratelé událostí můžou vyfiltrovat požadované typy událostí z určitého tématu.
Témata se dělí na systémová témata a vlastní témata.
Systémová témata
Systémová témata jsou předdefinovaná témata, která poskytují služby Azure. Ve vašem předplatném Azure nevidíte systémová témata, protože tato témata vlastní vydavatel, ale můžete se přihlásit k jejich odběru. Pokud se chcete přihlásit k odběru, zadejte informace o prostředku, ze kterého chcete přijímat události. Pokud máte k danému prostředku přístup, můžete se přihlásit k odběru jeho událostí.
Vlastní témata
Vlastní témata jsou témata aplikací a témata třetích stran. Po vytvoření vlastního tématu nebo po přiřazení vašeho přístupu k vlastnímu tématu se dané vlastní téma zobrazí ve vašem předplatném.
Co je odběr události?
Odběry událostí definují v tématu události, které obslužná rutina události chce přijímat. Odběr může také filtrovat události podle jejich typu nebo předmětu, abyste měli jistotu, že obslužná rutina události přijímá jenom relevantní události.
Co je obslužná rutina události?
Obslužná rutina události (někdy se označuje jako „odběratel“ události) je jakákoli součást (aplikace nebo prostředek), která může přijímat události z Event Gridu. Azure Functions může například spustit kód v reakci na nové skladby přidané do účtu služby Blob Storage. Odběratelé můžou rozhodnout, které události chtějí zpracovat, a Event Grid bude efektivně informovat každého odběratele, když je k dispozici nová událost; nevyžaduje se žádné dotazování.
Typy zdrojů událostí
Následující typy prostředků Azure můžou generovat události:
Služby Azure, které podporují témata systému
Tady je několik služeb Azure, které podporují systémová témata. Úplný seznam služeb Azure, které podporují témata systému, najdete v tématu Systémová témata ve službě Azure Event Grid.
- Předplatná a skupiny prostředků Azure: Skupiny prostředků a předplatná v Azure generují události související s operacemi správy. Když například uživatel vytvoří virtuální počítač, vygeneruje tento zdroj událost.
- Container Registry: Služba Azure Container Registry generuje události při přidání, odebrání nebo změně image v registru.
- Event Hubs: Služba Event Hubs se dá použít ke zpracování a ukládání událostí z různých zdrojů dat, obvykle k protokolování nebo související telemetrii. Event Hubs může generovat události do Event Gridu, když se zachytí soubory.
- Service Bus: Služba Service Bus může generovat události do Event Gridu, pokud existují aktivní zprávy bez aktivních naslouchacích procesů.
- Účty úložiště: Účty úložiště můžou generovat události, když uživatelé přidají objekty blob, soubory, položky tabulky nebo zprávy do fronty. Jako zdroje událostí můžete používat jak účty objektů blob, tak účty pro obecné účely verze 2.
- Media Services: Služba Media Services hostuje videa a zvukové soubory a poskytuje pokročilé funkce správy mediálních souborů. Služba Media Services může generovat události při spuštění nebo dokončení úlohy kódování souboru videa.
- Azure IoT Hub: Služba IoT Hub komunikuje se zařízeními IoT a shromažďuje z nich telemetrická data. Při přijetí takových komunikací může generovat události.
Další informace najdete v tématu Systémová témata ve službě Azure Event Grid.
Vlastní témata
Vlastní události můžete generovat pomocí rozhraní REST API nebo se sadou Azure SDK v Javě, GO, .NET, Node, Pythonu a Ruby. Například můžete vytvořit vlastní události pomocí funkce Web Apps služby Azure App Service. Může k tomu dojít v roli pracovního procesu při vyzvednutí zprávy z fronty úložiště.
Tato těsná integrace s různorodými zdroji událostí v Azure umožňuje službě Event Grid distribuovat události, které se můžou týkat skoro všech prostředků Azure.
Obslužné rutiny událostí
Přijímat a zpracovávat události z Event Gridu můžou následující typy objektů v Azure:
- Azure Functions: Vlastní kód, který běží v Azure, bez nutnosti explicitní konfigurace hostitelského virtuálního serveru nebo kontejneru. Funkci Azure Functions můžete použít jako obslužnou rutinu událostí, pokud chcete nakódovat vlastní odpověď na událost.
- Azure Logic Apps: Použití Logic Apps k implementaci obchodních procesů pro zpracování událostí Event Gridu V tomto scénáři nevytvoříte webhook explicitně. Webhook se automaticky vytvoří při konfiguraci aplikace logiky pro zpracování událostí z Event Gridu.
- Webhooks: Webhook je webové rozhraní API, které implementuje architekturu nabízených oznámení. Události můžete zpracovávat také pomocí runbooků Azure Automation. Webhooky podporují zpracování událostí pomocí automatizovaných runbooků. Vytvoříte webhook pro runbook a pak použijete obslužnou rutinu webhooku.
- Event Hubs: Službu Event Hubs použijte, když vaše řešení získává události z Event Gridu rychleji, než dokáže zpracovat události. Jakmile jsou události v centru událostí, může vaše aplikace zpracovávat události z centra událostí podle vlastního plánu.
- Service Bus: Frontu služby nebo téma můžete použít jako obslužnou rutinu pro události z Event Gridu.
- Fronty úložiště: Služba Queue Storage slouží k příjmu událostí, které je potřeba načíst. Queue Storage můžete použít v případě, že máte dlouhotrvající proces, který zabere příliš dlouhou odezvu. Odesláním událostí do Queue Storage může aplikace načíst a zpracovat události podle vlastního plánu.
- Microsoft Power Automate: Power Automate také hostuje pracovní postupy, ale je jednodušší používat netechnické pracovníky.
Další informace naleznete v tématu Obslužné rutiny událostí.
Měli byste používat Event Grid?
Službu Event Grid použijte tehdy, když potřebujete tyto funkce:
- Jednoduchost: Připojení zdrojů k odběratelům ve službě Event Grid je jednoduché.
- Rozšířené filtrování: Odběry můžou do velké míry určovat, jaké události chtějí z určitého tématu přijímat.
- Větvení: Ke stejným událostem a tématům můžete přihlásit neomezený počet koncových bodů.
- Spolehlivost: Event Grid opakuje pokusy o doručení události pro každý odběr až 24 hodin.
- Platba za události: Platíte jenom za počet událostí, které odešlete.
Event Grid je jednoduchý, ale všestranný systém distribuce událostí. Můžete ho použít k doručování samostatných událostí odběratelům a zajistit tak, že je spolehlivě a rychle dostanou. Máme ještě jeden model zasílání zpráv, který je potřeba prozkoumat; co když chceme doručovat velký proud událostí? Pro tyto situace není Event Grid právě ideální, protože je navržený k průběžnému doručování jednotlivých událostí. Namísto toho nám teď pomůže jiná služba Azure: Event Hubs.