Sdílet prostřednictvím


Vzory řešení služby Azure Stream Analytics

Stejně jako mnoho dalších služeb v Azure se Služba Stream Analytics nejlépe používá s dalšími službami k vytvoření většího uceleného řešení. Tento článek popisuje jednoduchá řešení Azure Stream Analytics a různé vzory architektury. Na těchto vzorech můžete stavět a vyvíjet složitější řešení. Vzory popsané v tomto článku lze použít v nejrůznějších scénářích. Příklady vzorů specifických pro scénáře jsou k dispozici v architekturách řešení Azure.

Vytvoření úlohy Stream Analytics pro podporu přehledového panelu v reálném čase

Pomocí Azure Stream Analytics můžete rychle vytvářet řídicí panely a upozornění v reálném čase. Jednoduché řešení přijímá události ze služby Event Hubs nebo IoT Hub a zásobuje řídicí panel Power BI streamovanou datovou sadou. Další informace najdete v podrobném kurzu Analýza podvodných dat volání pomocí Stream Analytics a vizualizace výsledků na řídicím panelu Power BI.

Diagram znázorňující události ze služby Event Hubs a IoT Hubs procházející přes Stream Analytics a na řídicí panel Power BI

Toto řešení můžete vytvořit během několika minut pomocí webu Azure Portal. Nemusíte provádět rozsáhlé kódování. Místo toho můžete k vyjádření obchodní logiky použít jazyk SQL.

Tento model řešení nabízí nejnižší latenci ze zdroje událostí do řídicího panelu Power BI v prohlížeči. Azure Stream Analytics je jediná služba Azure s touto integrovanou funkcí.

Použití SQL pro řídicí panel

Řídicí panel Power BI nabízí nízkou latenci, ale nemůžete ho použít k vytváření plnohodnotných sestav Power BI. Běžnými reportovacími postupy je nejprve výstup dat do SQL databáze. Potom použijte konektor SQL Power BI k dotazování SQL na nejnovější data.

Diagram znázorňující SQL Database jako přechodné úložiště mezi Stream Analytics a řídicím panelem Power BI

Když používáte SLUŽBU SQL Database, získáte větší flexibilitu, ale na úkor mírně vyšší latence. Toto řešení je optimální pro úlohy s požadavky na latenci větší než jednu sekundu. Při použití této metody můžete maximalizovat možnosti Power BI k dalšímu analyzování a zpracování dat pro sestavy a mnoho dalších možností vizualizace. Získáte také flexibilitu při používání jiných řešení řídicího panelu, jako je Tableau.

SQL není úložiště dat s vysokou propustností. Maximální propustnost služby SQL Database ze služby Azure Stream Analytics je v současné době přibližně 24 MB/s. Pokud zdroje událostí ve vašem řešení vytvářejí data vyšší rychlostí, musíte použít logiku zpracování ve službě Stream Analytics, abyste snížili výstupní rychlost do SQL. Můžete použít techniky, jako je filtrování, agregace s okny, porovnávání vzorů s časovými spojeními a analytické funkce. Výstupní rychlost pro SQL můžete optimalizovat pomocí technik popsaných ve výstupu Azure Stream Analytics do služby Azure SQL Database.

Začlenění přehledů v reálném čase do aplikace pomocí zasílání zpráv událostí

Druhým nejoblíbenějším využitím Stream Analytics je generování výstrah v reálném čase. V tomto vzoru řešení je možné obchodní logiku ve službě Stream Analytics použít k detekci dočasných a prostorových vzorů nebo anomálií a následnému generování výstrah. Na rozdíl od řešení řídicího panelu, kde Stream Analytics používá Power BI jako upřednostňovaný koncový bod, můžete použít i jiné zprostředkující úložiště dat. Mezi tyto jímky patří Event Hubs, Service Bus a Azure Functions. Jako tvůrce aplikací musíte rozhodnout, která jímka dat bude pro váš scénář nejvhodnější.

Je potřeba implementovat logiku příjemce následných událostí k generování upozornění ve vašem stávajícím obchodním pracovním postupu. Vzhledem k tomu, že ve službě Azure Functions můžete implementovat vlastní logiku, je služba Azure Functions nejrychlejším způsobem, jak tuto integraci provést. Kurz použití funkce Azure Functions jako výstupu úlohy Stream Analytics najdete v tématu Spouštění funkcí Azure Functions z úloh Azure Stream Analytics. Azure Functions také podporuje různé typy oznámení, včetně textu a e-mailu. Logic Apps můžete také použít pro takovou integraci se službou Event Hubs mezi Stream Analytics a Logic Apps.

Diagram znázorňující Event Hubs a IoT Hubs jako zdroje dat a Event Hubs, Service Bus nebo Functions jako cíle pro úlohu Azure Stream Analytics

Služba Azure Event Hubs na druhé straně nabízí nejflexibilnější integrační bod. Řada dalších služeb, jako je Azure Data Explorer, může využívat události ze služby Event Hubs. Služby je možné připojit přímo k jímce služby Event Hubs z Azure Stream Analytics a dokončit řešení. Služba Event Hubs je také zprostředkovatel zasílání zpráv s nejvyšší propustností dostupný v Azure pro takové scénáře integrace.

Dynamické aplikace a weby

Pomocí Azure Stream Analytics a služby Azure SignalR můžete vytvářet vlastní vizualizace v reálném čase, jako je řídicí panel nebo vizualizace map. Když používáte SignalR, můžou být webové klienty aktualizovány a zobrazovat dynamický obsah v reálném čase.

Diagram znázorňující webovou aplikaci využívající službu SignalR jako cíl

Začlenění přehledů v reálném čase do aplikace prostřednictvím úložišť dat

Většina webových služeb a webových aplikací dnes používá vzor požadavků a odpovědí k poskytování prezentační vrstvy. Model požadavků a odpovědí je jednoduchý k sestavení a dá se snadno škálovat s nízkou dobou odezvy pomocí bezstavového front-endu a škálovatelných úložišť, jako je Azure Cosmos DB.

Velký objem dat často vytváří kritické body výkonu v systému založeném na CRUD. Vzorec řešení event sourcingu se používá k řešení výkonnostních úzkých míst. Dočasné vzory a přehledy jsou také obtížné a neefektivní pro extrakci z tradičního úložiště dat. Moderní aplikace řízené velkým objemem dat často přijímají architekturu založenou na toku dat. Azure Stream Analytics jako výpočetní modul pro data v pohybu je v této architektuře klíčovým prvkem.

Diagram znázorňující aplikaci v reálném čase jako cíl úlohy Stream Analytics

V tomto modelu řešení se události zpracovávají a agregují do úložišť dat službou Azure Stream Analytics. Aplikační vrstva komunikuje s úložišti dat pomocí tradičního vzoru požadavků a odpovědí. Vzhledem k tomu, že Stream Analytics dokáže zpracovávat velký počet událostí v reálném čase, je aplikace vysoce škálovatelná, aniž by bylo nutné hromadně navýšit vrstvu úložiště dat. Vrstva úložiště dat je v podstatě materializované zobrazení v systému. Výstup Azure Stream Analytics do služby Azure Cosmos DB popisuje, jak se služba Azure Cosmos DB používá jako výstup Stream Analytics.

V reálných aplikacích, kde je logika zpracování složitá a je potřeba nezávisle upgradovat určité části logiky, lze několik úloh Stream Analytics sestavit společně se službou Event Hubs jako zprostředkující zprostředkovatel událostí.

Diagram znázorňující službu Event Hubs jako zprostředkovatele a aplikaci v reálném čase jako cíl úlohy Stream Analytics.

Tento model zlepšuje odolnost a možnosti správy systému. Přestože ale Stream Analytics zaručuje přesně jedno zpracování, existuje malá šance, že se duplicitní události dostanou do zprostředkující služby Event Hubs. Je důležité, aby podřízená úloha Stream Analytics odstraňovala duplicitní události pomocí logických klíčů v okně zpětného vyhledávání. Další informace o doručení událostí naleznete v tématu Záruky doručení událostí .

Použití referenčních dat pro přizpůsobení aplikace

Funkce referenčních dat Azure Stream Analytics je navržená speciálně pro přizpůsobení koncových uživatelů, jako jsou prahová hodnota pro upozorňování, pravidla zpracování a geografické zóny. Aplikační vrstva může přijímat změny parametrů a ukládat je do služby SQL Database. Úloha Stream Analytics se pravidelně dotazuje na změny z databáze a zpřístupňuje parametry přizpůsobení prostřednictvím připojení referenčních dat. Další informace o tom, jak používat referenční data pro přizpůsobení aplikace, naleznete v tématu Referenční data SQL a připojení referenčních dat.

Tento vzor lze také použít k implementaci stroje pravidel, kde jsou prahové hodnoty pravidel definovány z referenčních dat. Pro více informací o pravidlech se podívejte na Zpracování konfigurovatelných pravidel na základě prahových hodnot v Azure Stream Analytics.

Diagram znázorňující úlohu Stream Analytics a cílovou aplikaci využívající referenční data

Přidání strojového učení do přehledů v reálném čase

Integrovaný model detekce anomálií v Azure Stream Analytics představuje pohodlný způsob, jak zavést Machine Learning do aplikace v reálném čase. Širší škálu potřeb strojového učení najdete v tématu Integrace Azure Stream Analytics se službou Azure Machine Learning. Modely můžete nasadit ze služby Azure Machine Learning a volat je jako uživatelem definované funkce (UDF) v dotazech Stream Analytics.

Pro pokročilé uživatele, kteří chtějí začlenit online trénink a vyhodnocení do stejného kanálu Stream Analytics, je zde příklad, jak to provést s lineární regresí.

Diagram znázorňující úlohu Azure Stream Analytics pomocí modelu vyhodnocování ML

Datové sklady v reálném čase

Dalším běžným vzorem je datové sklady v reálném čase, označované také jako streamovaný datový sklad. Kromě událostí přicházejících do event Hubs a IoT Hubu z vaší aplikace je možné použít Azure Stream Analytics běžící na IoT Edge k plnění požadavků na čištění dat, redukci dat a ukládání dat a předávání. Stream Analytics běžící na IoT Edge může řádně zvládnout omezení šířky pásma a problémy s připojením v systému. Stream Analytics může při zápisu do Azure Synapse Analytics podporovat propustnost až 200 MB/s.

Diagram znázorňující datový sklad v reálném čase jako cíl úlohy Stream Analytics

Archivace dat v reálném čase pro analýzy

Většina aktivit datových věd a analýz stále probíhá offline. Data v Azure Stream Analytics můžete archivovat prostřednictvím výstupních formátů Azure Data Lake Store Gen2 a Parquet. Tato funkce eliminuje tření, aby se data odesílala přímo do Azure Synapse Analytics, Azure Databricks, Microsoft Fabric a Azure HDInsight. Azure Stream Analytics se v tomto řešení používá jako modul ETL (Extract-Transform-Load) téměř v reálném čase. Archivovaná data v Data Lake můžete prozkoumat pomocí různých výpočetních modulů.

Diagram znázorňující archivaci dat v reálném čase z úlohy Stream Analytics

Použít referenční data pro obohacení

Rozšiřování dat je často požadavkem pro moduly ETL. Azure Stream Analytics podporuje rozšiřování dat s referenčními daty z SQL Database i azure Blob Storage. Obohacování dat lze provádět pro data, která přistávají v Azure Data Lake i Azure Synapse Analytics.

Diagram znázorňující použití referenčních dat k obohacení streamovaných dat a následné použití offline analýz

Zprovoznění přehledů z archivovaných dat

Pokud zkombinujete model offline analýz se vzorem aplikace téměř v reálném čase, můžete vytvořit smyčku zpětné vazby. Smyčka zpětné vazby umožňuje aplikaci automaticky upravit změny vzorů v datech. Tato smyčka zpětné vazby může být stejně jednoduchá jako změna prahové hodnoty pro upozorňování nebo složité jako opětovné natrénování modelů strojového učení. Stejnou architekturu řešení je možné použít pro úlohy ASA běžící v cloudu i ioT Edge.

Diagram znázorňující studenou cestu i horkou cestu v řešení Stream Analytics

Integrace Apache Kafka

Stream Analytics podporuje Apache Kafka jako vstup i výstup prostřednictvím služby Azure Event Hubs s koncovým bodem Kafka. Tento model umožňuje:

  • Migrace z existujících architektur založených na Platformě Kafka do Azure
  • Hybridní scénáře připojení místních clusterů Kafka k Azure
  • Integrace s nástroji a konektory v ekosystému Apache Kafka

Výstup Delta Lake pro architektury lakehouse

V případě moderních architektur lakehouse může Stream Analytics zapisovat přímo do formátu Delta Lake ve službě Azure Data Lake Storage Gen2. Delta Lake poskytuje:

  • Transakce ACID pro spolehlivý příjem dat
  • Vynucování schématu a vývoj
  • Možnosti časového cestování pro správu verzí dat
  • Jednotný přístup k dávkovému a streamovanému zpracování dat

Výběr správného vzoru

Tato tabulka vám pomůže vybrat vhodný vzor pro váš scénář:

Scénář Doporučený vzor Klíčová výhoda
Řídicí panely v reálném čase Datová sada streamování Power BI Nejnižší latence
Komplexní reportování SQL Database + Power BI Úplné možnosti BI
Výstrahy řízené událostmi Event Hubs + Azure Functions (Centra událostí a funkce Azure) Flexibilní integrace
Data Lake Analytics Výstup Delta Lake Transakce ACID
Úlohy Kafka Koncový bod Kafka služby Event Hubs Kompatibilita protokolu

Monitorování úloh ASA

Úlohu Azure Stream Analytics je možné spustit 24/7 pro průběžné zpracování příchozích událostí v reálném čase. Její záruka dostupnosti je zásadní pro stav celkové aplikace. I když je Stream Analytics jedinou službou streamovací analýzy v oboru, která nabízí záruku dostupnosti 99,9 %, stále máte určitou úroveň výpadku. V průběhu let služba Stream Analytics zavedla metriky, protokoly a stavy úloh, které odrážejí stav úloh. Všechny se zobrazí prostřednictvím služby Azure Monitor a je možné je exportovat do pracovního prostoru služby Log Analytics pro hlubší analýzu. Další informace najdete v tématu Monitorování úlohy Stream Analytics pomocí webu Azure Portal.

Diagram znázorňující monitorování úloh Stream Analytics

Monitorování je potřeba provést dvěma klíčovými věcmi:

  • Stav selhání úlohy

    Nejprve je potřeba se ujistit, že je úloha spuštěná. Bez úlohy ve spuštěném stavu se negenerují žádné nové metriky ani protokoly. Úlohy se můžou změnit na stav selhání z různých důvodů, včetně vysoké úrovně využití SU (to znamená nedostatku prostředků).

  • Metriky zpoždění vodoznaku

    Tato metrika odráží, jak daleko zaostává váš zpracovatelský kanál v reálném čase (v sekundách). Některé zpoždění jsou přičítány k vlastní logice zpracování. Díky tomu je monitorování rostoucího trendu mnohem důležitější než monitorování absolutní hodnoty. Zpoždění stabilního stavu by mělo být řešeno návrhem aplikace, nikoli monitorováním nebo upozorněními.

Nastavení upozornění a řídicích panelů

Konfigurace upozornění služby Azure Monitor pro proaktivní monitorování:

  1. Využití jednotek SU – výstraha při trvalém překročení 80 %, aby se předešlo selhání úlohy
  2. Zpoždění vodoznaku – upozornění na zvýšení trendů, které označují prodlevu zpracování
  3. Vstupní/výstupní události – Monitorování náhlého poklesu indikující problémy s připojením
  4. Chyby za běhu – Sledování selhání deserializace a převodu dat

Pro centralizovanou pozorovatelnost exportujte metriky Stream Analytics a protokoly do pracovního prostoru služby Log Analytics. To umožňuje:

  • Korelace a analýza mezi úlohami
  • Vlastní dotazy Kusto pro hlubokou diagnostiku
  • Integrace s řídicími panely a sešity Azure

Při selhání jsou protokoly aktivit a diagnostické protokoly nejvhodnějším místem, kde začít hledat chyby.

Vytváření odolných a důležitých aplikací

Bez ohledu na záruku SMLOUVY SLA služby Azure Stream Analytics a způsobu, jakým pečlivě spouštíte kompletní aplikaci, dochází k výpadkům. Pokud je vaše aplikace důležitá, musíte být připraveni na výpadky, abyste mohli řádně obnovit.

Pro upozorňování aplikací je nejdůležitější zjistit další výstrahu. Při obnovování můžete úlohu restartovat z aktuálního času a ignorovat předchozí výstrahy. Sémantika času spuštění úlohy je určena prvním časem výstupu, nikoli prvním časem vstupu. Vstup se znovu vrátí zpět, aby se zajistilo, že první výstup v zadaném čase bude dokončený a správný. V důsledku toho nedostanete částečné agregace a upozornění nebudou neočekávaně aktivována.

Můžete také zvolit spuštění výstupu z určitého časového období v minulosti. Zásady uchovávání informací služby Event Hubs i IoT Hub obsahují přiměřené množství dat, která umožňují zpracování z minulosti. Kompromisem je, jak rychle můžete dohnat aktuální čas a začít generovat včasné nové výstrahy. Data rychle ztratí svou hodnotu v průběhu času, takže je důležité rychle dohnat aktuální čas. Existují dva způsoby, jak rychle dohnat:

  • Zajistěte více prostředků (SU) při dohánění.
  • Restartujte od aktuálního času.

Restartování z aktuálního času je jednoduché, ale jako kompromis při zpracování zanechává mezeru. Restartování tímto způsobem může být vhodné pro scénáře upozorňování, ale může činit potíže pro scénáře dashboardů a je nepřijatelný pro archivaci a datové sklady.

Zřizování dalších prostředků může proces urychlit, ale dopad nárůstu rychlosti zpracování je složitý.

  • Otestujte, že je vaše úloha škálovatelná na větší počet jednotek SU. Ne všechny dotazy jsou škálovatelné. Musíte se ujistit, že je dotaz paralelizovaný.

  • Ujistěte se, že v upstream Event Hubs nebo IoT Hubu existuje dostatek oddílů, abyste mohli přidat více jednotek propustnosti (TUs) pro škálování vstupní propustnosti. Mějte na paměti, že každý Event Hubs TU dosahuje maximální výstupní rychlosti 2 MB/s.

  • Ujistěte se, že jste zřídili dostatek prostředků ve výstupních úložištích (jako SQL Database, Azure Cosmos DB), aby nedošlo ke škrcení při nárůstu výstupu, což může někdy způsobit, že se systém zablokuje.

Nejdůležitější je předvídat změnu rychlosti zpracování, otestovat tyto scénáře před přechodem do produkčního prostředí a připravit se na správné škálování zpracování během doby obnovení selhání.

V extrémním scénáři, kdy jsou všechny příchozí události zpožděné, je možné, že se všechny zpožděné události zahodí, pokud jste u své úlohy použili okno pro pozdní příchozí. Vynechávání událostí může na začátku působit záhadně; Vzhledem k tomu, že Stream Analytics je analytický nástroj pro zpracování v reálném čase, očekává, že příchozí události budou blízko aktuálního času. Musí vypustit události, které porušují tato omezení.

Lambda architektury nebo proces doplnění dat

Předchozí vzor archivace dat se naštěstí dá použít ke zpracování těchto pozdních událostí elegantně. Myšlenka spočívá v tom, že archivační úloha zpracovává příchozí události v čase příjezdu a archivuje události do příslušného časového segmentu ve službě Azure Blob nebo Azure Data Lake Store s časem události. Nezáleží na tom, jak pozdě událost přijde, nikdy se neodhodí. Vždy se dostane do správného časového rozmezí. Během obnovení je možné znovu zpracovat archivované události a obnovit výsledky do zvoleného úložiště. Podobá se tomu, jak se implementují vzory lambda.

ASA backfill

Proces zálohování musí být proveden pomocí offline systému dávkového zpracování, který má pravděpodobně jiný programovací model než Azure Stream Analytics. To znamená, že musíte znovu vytvořit celou logiku zpracování.

Pro doplnění je stále důležité alespoň dočasně zřídit více prostředků pro výstupní uzly, aby zvládly vyšší datový tok než potřeby zpracování v stabilním stavu.

Scénáře Restartujte pouze od teď Restart od posledního zastaveného místa Restartovat odteď + doplnit archivovanými událostmi
Řídicí panely Vytvoří mezeru. OK pro krátký výpadek Použít při dlouhém výpadku
Upozorňování Přijatelné OK pro krátký výpadek Není nutné
Aplikace pro sledování událostí Přijatelné OK pro krátký výpadek Použít při dlouhém výpadku
Datové sklady Ztráta dat Přijatelné Není nutné
Offline analýzy Ztráta dat Přijatelné Není nutné

Spojení všech částí dohromady

Není těžké si představit, že všechny vzory řešení uvedené dříve je možné kombinovat v celistvém komplexním systému. Kombinovaný systém může zahrnovat řídicí panely, upozorňování, aplikaci event sourcing, datové sklady a možnosti offline analýz.

Klíčem je navrhnout systém v kompozibilních vzorech, takže je možné každý subsystém sestavit, otestovat, upgradovat a obnovit nezávisle.

Další kroky

Seznámili jste se s různými vzory řešení pomocí Azure Stream Analytics. V dalším kroku se můžete do tématu ponořit hlouběji a vytvořit si svoji první úlohu Stream Analytics: