Řešení, která používají Azure Event Hubs společně s Azure Functions výhodou z architektury bez serveru , která je škálovatelná, nákladově efektivní a schopná zpracovávat velké objemy dat téměř v reálném čase. Jelikož tyto služby fungují bez problémů společně, existuje mnoho funkcí, nastavení a složitými rozhraními, které přidávají složitost ke své relaci. Tento článek poskytuje informace o tom, jak efektivně využít tuto integraci, a to zvýrazňováním klíčových doporučení a technik pro výkon, odolnost, zabezpečení, možnosti pozorování a škálování.
Event Hubs základní koncepty
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 začnete do vzorů a osvědčených postupů pro integraci Azure Functions, je nejlepší pochopit základní komponenty Event Hubs.
Následující diagram znázorňuje architekturu zpracování Event Hubsho streamu:
Události
Událost je změna oznámení nebo stavu, která je vyjádřena jako skutečnost, která se stala v minulosti. Události jsou neměnné a chovají se v centru událostí, označované také jako téma v Kafka. Centrum událostí se skládá z jednoho nebo více oddílů.
Oddíly
Pokud není oddíl určen odesílatelem, jsou přijaté události distribuovány mezi oddíly v centru událostí. Každá událost je zapsána přesně v jednom oddílu a neprovádí vícenásobné přetypování mezi oddíly. Každý oddíl funguje jako protokol, ve kterém jsou záznamy zapisovány do vzoru pouze pro připojení. Analogie protokolu potvrzení se často používá k popisu povahy způsobu, jakým jsou události přidány na konec sekvence v oddílu.
Pokud se používá víc než jeden oddíl, umožní se použití paralelních protokolů v rámci stejného centra událostí. Toto chování poskytuje několik stupňů paralelismu a vylepšuje propustnost pro uživatele.
Uživatelé a skupiny uživatelů
Oddíl může být spotřebován více než jedním příjemcem, každým čtením z a správou jejich vlastních posunů.
Event Hubs má koncept skupin uživatelů, který umožňuje více aplikacím, které mají více využívat, mít samostatné zobrazení datového proudu událostí a číst datový proud nezávisle na vlastním tempu a s jejich vlastními posuny.
Další informace najdete v tématu podrobné podrobně o Event Hubs konceptech a funkcích.
Spotřebovávání událostí s Azure Functions
Azure Functions podporuje triggery a výstupní vazby pro Event Hubs. Tato část popisuje, jak Azure Functions reagovat na události odeslané do datového proudu událostí centra událostí pomocí aktivačních událostí.
Každá instance funkce aktivované Event Hubs je zajištěna jednou instancí EventProcessorHost . Aktivační událost (s podporou Event Hubs) zajišťuje, že v daném oddílu může získat zapůjčení jenom jedna instance EventProcessorHost .
Například Vezměte v úvahu centrum událostí s následujícími charakteristikami:
- 10 oddílů.
- 1 000 události jsou distribuovány rovnoměrně po všech oddílech s proměnlivým počtem zpráv v každém oddílu.
Je-li funkce nejprve povolena, je k dispozici pouze jedna instance funkce. Pojďme zavolat první instanci funkce Function_1 . Function_1 má jednu instanci EventProcessorHost , která drží zapůjčení na všech 10 oddílech. Tato instance čte události z oddílů 1-10. Od této chvíle nastane jedna z následujících možností:
Nové instance funkcí nejsou potřeba:
Function_1než se logika škálování funkcí projeví, může se zpracovat všechny události 1 000. V tomto případě jsou všechny zprávy 1 000 zpracovávány pomocíFunction_1.Přidala se další instance funkce: škálování založené na událostech nebo jiná automatizovaná nebo manuální logika může určit, že
Function_1má více zpráv, než může zpracovat, a pak vytvoří novou instanci aplikace Function App (Function_2). Tato nová funkce má také přidruženou instanci EventProcessorHost. Vzhledem k tomu, že základní centrum událostí detekuje, že se u nové instance hostitele pokouší číst zprávy, zatížení vyrovnává oddíly mezi instancemi hostitelů. Například oddíly 1-5 mohou být přiřazeny kFunction_1a oddíly 6-10 ažFunction_2.N je přidaných víc instancí funkcí: škálování na základě událostí nebo jiná automatizovaná nebo ruční logika určuje, že
Function_1Function_2má a má víc zpráv, než můžou zpracovat, _ vytvoří se nová funkce N instancí aplikace Function App. Instance jsou vytvořeny do bodu, kde N je větší nebo rovno počtu oddílů centra událostí. V našem příkladu Event Hubs znovu vyrovnávání zatížení oddílů v tomto případě napříč instancemiFunction_1...Function_10.
V případě, že dojde ke škálování, instance N instancí můžou být číslo větší než počet oddílů centra událostí. K této situaci může dojít při škálování na základě události, které se ustálí počty instancí nebo protože jiná automatizovaná nebo ruční logika vytvořila více instancí než oddílů. V takovém případě budou instance EventProcessorHost získávat zámky jenom v oddílech, když jsou dostupné z jiných instancí. v takovém případě může přístup k oddílům, které se zámky mají, získat jenom jedna instance funkce ze stejné skupiny příjemců.
Po dokončení všech spuštění funkce (s chybami nebo bez nich) se do přidruženého účtu úložiště přidají kontrolní body. Po úspěšném vrácení se změnami se nebudou všechny zprávy 1 000 znovu načíst.
dynamické škálování založené na událostech je možné s využitím a Premium plánů Azure. Aplikace hostované funkcí Kubernetes můžou také využít výhod nástroje keda scaleer pro Event Hubs. Škálování na základě událostí v současné době není možné, pokud je aplikace Function hostovaná ve vyhrazeném (App Service) plánu, který vyžaduje, abyste určili správný počet instancí na základě vašich úloh.
Další informace najdete v tématu vazby k azure Event Hubs pro Azure Functions a Trigger azure Event Hubs pro Azure Functions.
Další kroky
Související prostředky
- Monitorování zpracování událostí bez serveru poskytuje pokyny týkající se monitorování architektury řízených událostmi, které se zpracovávají bez serveru.
- Zpracování událostí bez serveru je referenční architektura, která podrobně popisuje typickou architekturu tohoto typu, s ukázkami kódu a diskuzí o důležitých faktorech.
- Zrušení dávek a filtrování ve zpracování událostí bez serveru s Event Hubs podrobněji popisuje, jak tyto části referenční architektury fungují.