Upravit

Sdílet prostřednictvím


Integrace služby Event Hubs s bezserverovými funkcemi v Azure

Azure Event Hubs
Azure Functions
Azure Monitor

Řešení, která využívají Službu Azure Event Hubs společně se službou Azure Functions, využívají bezserverovou architekturu, která je škálovatelná, nákladově efektivní a schopná zpracovávat velké objemy dat téměř v reálném čase. Stejně jako tyto služby bezproblémově spolupracují, existuje mnoho funkcí, nastavení a složitých funkcí, které přidají složitost jejich vztahu. Tento článek obsahuje pokyny k efektivnímu využití této integrace tím, že zvýrazní klíčové aspekty a techniky 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:

Architektura služby Event Hubs

Události

Událost je oznámení nebo změna stavu, která je reprezentována jako fakt, ke kterému došlo v minulosti. Události jsou neměnné a trvalé v centru událostí, označované také jako téma v systému Kafka. Centrum událostí se skládá z jednoho nebo více oddílů.

Oddíly

Pokud odesílatel nezadá oddíl, přijaté události se distribuují mezi oddíly v centru událostí. Každá událost je napsaná přesně v jednom oddílu a není více přetypovaná napříč oddíly. Každý oddíl funguje jako protokol, ve kterém se záznamy zapisují v vzoru jen pro připojení. Analogie protokolu potvrzení se často používá k popisu povahy způsobu přidání událostí na konec sekvence v oddílu.

Zápis do oddílů

Pokud se použije 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 příjemců

Oddíl může využívat více než jeden příjemce, každý čtení a správu vlastních posunů.

Příjemci oddílů

Služba Event Hubs má koncept skupin příjemců, což umožňuje více aplikacím, aby každý z nich měl samostatné zobrazení datového proudu událostí a stream si přečetl nezávisle vlastním tempem a s jejich vlastními posuny.

Další informace najdete v podrobných informacích o konceptech a funkcích služby Event Hubs.

Využívání událostí s využitím Azure Functions

Azure Functions podporuje aktivační a výstupní vazby pro službu Event Hubs. Tato část popisuje, jak Azure Functions reaguje na události odeslané do streamu událostí centra událostí pomocí triggerů.

Každá instance aktivované funkce Event Hubs je zajištěna jednou instancí EventProcessorHost . Trigger (využívající službu Event Hubs) zajišťuje, že v daném oddílu může získat zapůjčení pouze jedna instance EventProcessorHost .

Představte si například centrum událostí s následujícími vlastnostmi:

  • 10 oddílů.
  • 1 000 událostí distribuuje rovnoměrně všechny oddíly s různým počtem zpráv v každém oddílu.

Když je vaše funkce poprvé povolená, existuje pouze jedna instance funkce. Pojďme volat první instanci Function_1funkce . Function_1 má jednu instanci EventProcessorHost , která obsahuje zapůjčení všech 10 oddílů. Tato instance čte události z oddílů 1–10. Od tohoto okamžiku se stane jedna z následujících věcí:

  • Nové instance funkcí nejsou potřeba: Function_1 může zpracovat všech 1 000 událostí, než se logika škálování functions projeví. V tomto případě se všemi 1 000 zprávami Function_1zpracovává .

    Jedna instance služby Event Hubs a Functions

  • 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 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ů napříč instancemi hostitele. Například oddíly 1-5 mohou být přiřazeny a Function_1 oddíly 6-10 do Function_2.

    Event Hubs a Functions se dvěma instancemi

  • Přidáváme více instancí funkcí: škálování na základě událostí nebo jiná automatizovaná nebo ruční logika určuje, že obě Function_1 a Function_2 mají více zpráv, než mohou zpracovat, vytvoří se nové instance aplikace funkcí Function_N. Instance se vytvoří v bodě, kde se N rovná nebo je větší než počet oddílů centra událostí. V našem příkladu služba Event Hubs znovu vyrovnává zatížení oddílů, v tomto případě napříč instancemi Function_1...Function_10.

    Event Hubs a funkce s více instancemi

Při škálování můžou být N instance 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íly. V tomto případě instance EventProcessorHost získají zámky pouze v oddílech, jakmile budou dostupné z jiných instancí, protože v každém okamžiku má přístup k nebo čtení z oddílů, na které má uzamčený přístup pouze jedna instance funkce ze stejné skupiny příjemců.

Po dokončení provádění všech funkcí (s chybami nebo bez chyb) se kontrolní body přidají do přidruženého účtu úložiště. Pokud bude kontrola úspěšná, všechny 1 000 zpráv se už nikdy nenačtou.

Dynamické škálování založené na událostech je možné s plány Consumption a Premium Azure. Aplikace hostovaných funkcí 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), což vyžaduje, abyste na základě vaší úlohy určili správný počet instancí.

Další informace najdete v tématu Vazby služby Azure Event Hubs pro triggery Azure Functions a Azure Event Hubs pro Azure Functions.

Přispěvatelé

Tento článek spravuje Microsoft. Původně byla napsána následujícími přispěvateli.

Hlavní autor:

Pokud chcete zobrazit neveřejné profily LinkedIn, přihlaste se na LinkedIn.

Další kroky