Řešení využívající Azure Event Hubs společně s Azure Functions těží z bezserverové architektury, která je škálovatelná, nákladově efektivní a schopná zpracovávat velké objemy dat téměř v reálném čase. I když tyto služby bezproblémově spolupracují, existuje mnoho funkcí, nastavení a záludností, které jejich vztah zkompilují. Tento článek obsahuje pokyny, jak efektivně využít výhod této integrace tím, že zdůrazníte klíčové aspekty a techniky z hlediska výkonu, odolnosti, zabezpečení, pozorovatelnosti a škálování.
Základní koncepty služby Event Hubs
Azure Event Hubs je vysoce škálovatelná služba pro zpracování událostí, která může přijímat miliony událostí za sekundu. Než se ponoříte do vzorů a osvědčených postupů pro integraci Azure Functions, je nejlepší porozumět základním komponentám služby Event Hubs.
Následující diagram znázorňuje architekturu zpracování datových proudů služby Event Hubs:
Události
Událost je oznámení nebo změna stavu, která je reprezentována jako skutečnost, která se stala v minulosti. Události jsou neměnné a trvalé v centru událostí, které se v systému Kafka označuje také jako téma. Centrum událostí se skládá z jednoho nebo několika oddílů.
Oddíly
Pokud odesílatel nezadá oddíl, přijaté události se distribuují napříč oddíly v centru událostí. Každá událost je napsaná přesně v jednom oddílu a není vícenásobně přetypovaná napříč oddíly. Každý oddíl funguje jako protokol, ve kterém se záznamy zapisují ve vzoru jen pro doplňování. Analogie protokolu potvrzení se často používá k popisu povahy způsobu, jakým se události přidávají na konec sekvence v oddílu.
Pokud se používá více než jeden oddíl, umožňuje používat paralelní protokoly ze stejného centra událostí. Toto chování poskytuje více stupňů paralelismu a zvyšuje propustnost pro uživatele.
Spotřebitelé a skupiny uživatelů
Oddíl může být využíván více než jedním příjemcem, přičemž každý z nich čte a spravuje své vlastní posuny.
Služba Event Hubs má koncept skupin příjemců, který umožňuje, aby každá z aplikací využívajících více uživatelů měla samostatné zobrazení streamu událostí a četla datový proud nezávisle vlastním tempem a s vlastním posunem.
Další informace najdete v tématu Podrobné informace o konceptech a funkcích služby Event Hubs.
Využívání událostí s Azure Functions
Azure Functions podporuje vazby triggerů a výstupů pro službu Event Hubs. Tato část popisuje, jak Azure Functions reagovat na události odeslané do streamu událostí centra událostí pomocí triggerů.
Každá instance funkce aktivované službou Event Hubs je podporována jednou instancí Třídy EventProcessorHost . Trigger (využívající službu Event Hubs) zajišťuje, že zapůjčení v daném oddílu může získat pouze jedna instance EventProcessorHost .
Představte si například centrum událostí s následujícími charakteristikami:
- 10 oddílů.
- 1 000 událostí distribuovaných rovnoměrně ve všech oddílech s různým počtem zpráv v každém oddílu.
Když je funkce poprvé povolená, existuje pouze jedna instance funkce. Zavoláme první instanci Function_1
funkce . Function_1
má jednu instanci Třídy EventProcessorHost , která má zapůjčení všech 10 oddílů. Tato instance načítá události z oddílů 1–10. Od tohoto okamžiku dojde k jedné z následujících situací:
Nové instance funkcí nejsou potřeba:
Function_1
mohou zpracovat všech 1 000 událostí před tím, než se logika škálování funkcí projeví. V tomto případě zpracovává všech 1 000 zpráv .Function_1
Přidá se další instance funkce: Škálování na základě událostí nebo jiná automatizovaná nebo ruční logika může určit, že obsahuje více zpráv,
Function_1
než může zpracovat, a pak vytvoří novou instanci aplikace funkcí (Function_2
). Tato nová funkce má také přidruženou instanci Třídy EventProcessorHost. Vzhledem k tomu, že podkladové centrum událostí zjistí, že se nová instance hostitele pokouší číst zprávy, vyrovnává zatížení oddílů mezi instancemi hostitele. Například oddíly 1–5 mohou být přiřazeny aFunction_1
oddíly 6–10 kFunction_2
.Přidá se n více instancí funkcí: škálování na základě událostí nebo jiná automatizovaná nebo ruční logika určuje, že se
Function_1
Function_2
vytvoří nové Function_N instance aplikace funkcí a obsahují více zpráv, než mohou zpracovat. Instance se vytvářejí do bodu, kde N je roven nebo větší než počet oddílů centra událostí. V našem příkladu služba Event Hubs opět vyrovnává zatížení oddílů, v tomto případě napříč instancemiFunction_1
...Function_10
.
S tím, jak dochází ke škálování, může být počet instancí N větší než počet oddílů centra událostí. K této situaci může dojít, když škálování řízené událostmi stabilizuje počty instancí nebo protože jiná automatizovaná nebo ruční logika vytvořila více instancí než oddílů. V tomto případě instance EventProcessorHost získají zámky pouze na oddíly, jakmile budou k dispozici z jiných instancí, protože v daném okamžiku může k oddílům, na které má zámky, přistupovat nebo číst pouze jedna instance funkce ze stejné skupiny příjemců.
Po dokončení provádění všech funkcí (s chybami nebo bez chyb) se do přidruženého účtu úložiště přidají kontrolní body. Pokud je kontrolní bod úspěšný, všech 1 000 zpráv se už nikdy nenačte.
Dynamické škálování na základě událostí je možné s plány Consumption a Premium Azure. Aplikace funkcí hostované v Kubernetes můžou také využívat škálovací nástroj KEDA pro službu Event Hubs. Škálování na základě událostí v současné době není možné, pokud je aplikace funkcí hostovaná v plánu Dedicated (App Service), který vyžaduje, abyste na základě vaší úlohy určili správný počet instancí.
Další informace najdete v tématech o Azure Event Hubs vazbách pro Azure Functions a triggeru Azure Event Hubs pro Azure Functions.
Přispěvatelé
Tento článek spravuje Microsoft. Původně ji napsali následující přispěvatelé.
Hlavní autor:
- David Barkol | Hlavní specialista řešení GBB
Pokud chcete zobrazit neveřejné profily LinkedIn, přihlaste se k LinkedInu.
Další kroky
Související prostředky
- Monitorování bezserverového zpracování událostí poskytuje pokyny k monitorování bezserverových architektur řízených událostmi.
- Bezserverové zpracování událostí je referenční architektura, která podrobně popisuje typickou architekturu tohoto typu, se vzorovými kódy a důležitými aspekty.
- Podrobnější popis fungování těchto částí referenční architektury popisuje zrušení dávkování a filtrování při bezserverovém zpracování událostí pomocí služby Event Hubs.