Az Azure Stream Analytics megoldásmintái
Az Azure számos más szolgáltatásához hasonlóan a Stream Analyticset is érdemes más szolgáltatásokkal együtt használni egy nagyobb, végpontok közötti megoldás létrehozásához. Ez a cikk az egyszerű Azure Stream Analytics-megoldásokat és a különböző architektúramintákat ismerteti. Ezekre a mintákra alapozva összetettebb megoldásokat fejleszthet. A cikkben ismertetett minták számos forgatókönyvben használhatók. Példák forgatókönyvspecifikus mintákra az Azure-megoldásarchitektúrákban.
Stream Analytics-feladat létrehozása a valós idejű irányítópult-használat érdekében
Az Azure Stream Analytics segítségével gyorsan létrehozhat valós idejű irányítópultokat és riasztásokat. Egy egyszerű megoldás betölti az eseményeket az Event Hubsból vagy az IoT Hubból, és streamelési adatkészlettel eteti a Power BI-irányítópultot. További információ: A hamis hívásadatok elemzése a Stream Analyticsszel és az eredmények vizualizációja a Power BI-irányítópulton.
Ezt a megoldást néhány perc alatt elkészítheti az Azure Portal használatával. Nem kell részletesen kódolnia. Ehelyett az SQL-nyelv használatával fejezheti ki az üzleti logikát.
Ez a megoldásminta a legkisebb késést kínálja az eseményforrástól a Power BI-irányítópultig egy böngészőben. Az Azure Stream Analytics az egyetlen Azure-szolgáltatás, amely rendelkezik ezzel a beépített képességgel.
Sql használata irányítópulthoz
A Power BI-irányítópult alacsony késést kínál, de nem használható teljes értékű Power BI-jelentések készítésére. Gyakori jelentési minta, hogy először az SQL Database-nek adja ki az adatokat. Ezután a Power BI SQL-összekötőjével kérdezheti le az SQL-t a legújabb adatokhoz.
Az SQL Database használata nagyobb rugalmasságot biztosít, de valamivel nagyobb késést eredményez. Ez a megoldás optimális az egy másodpercnél nagyobb késési követelményekkel rendelkező feladatokhoz. Ha ezt a módszert használja, maximalizálhatja a Power BI képességeit a jelentések adatainak további szeleteléséhez és kockázásához, valamint sokkal több vizualizációs lehetőséghez. Emellett rugalmasan használhat más irányítópult-megoldásokat is, például a Tableaut.
Az SQL nem nagy átviteli sebességű adattár. Az AZURE Stream Analyticsből az SQL Database maximális átviteli sebessége jelenleg körülbelül 24 MB/s. Ha a megoldás eseményforrásai magasabb sebességgel termelnek adatokat, a Stream Analytics feldolgozási logikáját kell használnia a kimeneti sebesség SQL-re való csökkentéséhez. Olyan technikákat használhat, mint a szűrés, az ablakos aggregátumok, az időbeli illesztésekkel való mintaegyezés és az elemzési függvények. Az Azure Stream Analytics azure SQL Database-beli kimenetében leírt technikákkal optimalizálhatja a kimeneti sebességet SQL-re.
Valós idejű elemzések beépítése az alkalmazásba eseményüzenetekkel
A Stream Analytics második legnépszerűbb használata a valós idejű riasztások létrehozása. Ebben a megoldási mintában a Stream Analytics üzleti logikája használható időbeli és térbeli minták vagy anomáliák észlelésére, majd riasztási jelek létrehozására. A Stream Analytics által előnyben részesített végpontként használt irányítópult-megoldással ellentétben azonban más köztes adatgyűjtőket is használhat. Ezek a fogadók közé tartoznak az Event Hubs, a Service Bus és az Azure Functions. Az alkalmazáskészítőnek el kell döntenie, hogy melyik adatgyűjtő működik a legjobban az Ön forgatókönyvéhez.
Az alsóbb rétegbeli eseményfelhasználói logikát kell implementálnia, hogy riasztásokat hozzon létre a meglévő üzleti munkafolyamatban. Mivel egyéni logikát implementálhat az Azure Functionsben, az Azure Functions a leggyorsabb módszer az integráció végrehajtására. Az Azure Functions Stream Analytics-feladatok kimeneteként való használatával kapcsolatos oktatóanyagért tekintse meg az Azure Functions Azure Stream Analytics-feladatokból való futtatását ismertető oktatóanyagot. Az Azure Functions különböző típusú értesítéseket is támogat, beleértve a szöveget és az e-maileket is. Az ilyen integrációhoz a Logic Appst is használhatja az Event Hubs szolgáltatással a Stream Analytics és a Logic Apps között.
Az Azure Event Hubs szolgáltatás viszont a legrugalmasabb integrációs pontot kínálja. Számos más szolgáltatás, például az Azure Data Explorer és a Time Series Elemzések is felhasználhat eseményeket az Event Hubsból. A megoldás elvégzéséhez a szolgáltatások közvetlenül csatlakoztathatók az Event Hubs-fogadóhoz az Azure Stream Analyticsből. Az Event Hubs emellett az Azure-ban elérhető legmagasabb átviteli sebességű üzenetközvetítő az ilyen integrációs forgatókönyvekhez.
Dinamikus alkalmazások és webhelyek
Az Azure Stream Analytics és az Azure SignalR Service használatával létrehozhat egyéni valós idejű vizualizációkat, például irányítópultot vagy térképvizualizációt. A SignalR használatakor a webes ügyfelek frissíthetők, és valós időben jeleníthetők meg a dinamikus tartalmak.
Valós idejű elemzések beépítése az alkalmazásba adattárakon keresztül
A legtöbb webszolgáltatás és webalkalmazás ma egy kérés-/válaszmintát használ a bemutató réteg kiszolgálásához. A kérés-válasz minta egyszerűen felépíthető, és alacsony válaszidővel egyszerűen méretezhető állapot nélküli előtér- és skálázható tárolók, például az Azure Cosmos DB használatával.
A nagy adatmennyiség gyakran okoz teljesítménybeli szűk keresztmetszeteket a CRUD-alapú rendszerekben. Az esemény-beszerzési megoldás mintája a teljesítmény szűk keresztmetszeteinek kezelésére szolgál. Az időbeli minták és elemzések szintén nehézkesek és nem hatékonyak a hagyományos adattárakból kinyerni. A modern nagy mennyiségű adatvezérelt alkalmazások gyakran alkalmaznak adatfolyam-alapú architektúrát. Az Azure Stream Analytics, mint a mozgásban lévő adatok számítási motorja az architektúra egyik linchpinje.
Ebben a megoldási mintában az eseményeket az Azure Stream Analytics dolgozza fel és összesíti adattárakba. Az alkalmazásréteg a hagyományos kérés-válasz mintával kommunikál az adattárakkal. Mivel a Stream Analytics nagy számú eseményt képes valós időben feldolgozni, az alkalmazás nagy mértékben méretezhető anélkül, hogy az adattár rétegét tömegessé kellene tenni. Az adattárréteg lényegében egy materializált nézet a rendszerben. Az Azure Cosmos DB Azure Stream Analytics-kimenete azt ismerteti, hogy az Azure Cosmos DB hogyan használható Stream Analytics-kimenetként.
Olyan valós alkalmazásokban, ahol a logika feldolgozása összetett, és a logika bizonyos részeit egymástól függetlenül kell frissíteni, több Stream Analytics-feladat is összeállítható az Event Hubs-tal együtt közvetítő eseményszervezőként.
Ez a minta javítja a rendszer rugalmasságát és kezelhetőségét. Annak ellenére azonban, hogy a Stream Analytics pontosan egyszer garantálja a feldolgozást, kicsi az esély arra, hogy az ismétlődő események a köztes Event Hubsba érnek. Fontos, hogy az alárendelt Stream Analytics-feladat logikai kulcsokkal deduplikáljon eseményeket egy visszatekintő ablakban. További információ az eseménykézbesítésről: Event Delivery Guarantees reference.
Referenciaadatok használata alkalmazás testreszabásához
Az Azure Stream Analytics referenciaadat-szolgáltatása kifejezetten végfelhasználói testreszabáshoz készült, például riasztási küszöbértékekhez, feldolgozási szabályokhoz és geofencesekhez. Az alkalmazásréteg elfogadhatja a paraméterek módosításait, és tárolhatja őket az SQL Database-ben. A Stream Analytics-feladat rendszeresen lekérdezi az adatbázis módosításait, és a testreszabási paramétereket egy referenciaadat-összekapcsoláson keresztül teszi elérhetővé. További információ a referenciaadatok alkalmazás testreszabásához való használatáról: SQL-referenciaadatok és referenciaadat-illesztés.
Ez a minta olyan szabálymotor implementálásához is használható, amelyben a szabályok küszöbértékei referenciaadatokból vannak meghatározva. További információ a szabályokról: Konfigurálható küszöbértékalapú szabályok feldolgozása az Azure Stream Analyticsben.
Gépi Tanulás hozzáadása valós idejű elemzésekhez
Az Azure Stream Analytics beépített anomáliadetektálási modellje kényelmesen bemutatja a gépi Tanulás a valós idejű alkalmazásba. A gépi Tanulás igényeinek szélesebb skáláját lásd: Az Azure Stream Analytics integrálható az Azure Machine Tanulás pontozási szolgáltatásával.
Azoknak a haladó felhasználóknak, akik online betanítást és pontozást szeretnének beépíteni ugyanabba a Stream Analytics-folyamatba, tekintse meg ezt a példát a lineáris regresszióval.
Valós idejű adatraktározás
Egy másik gyakori minta a valós idejű adattárház, más néven streamelési adattárház. Az Event Hubsba és az IoT Hubra az alkalmazásból érkező események mellett az IoT Edge-en futó Azure Stream Analytics is használható az adattisztítási, adatcsökkentési, adattárolási és adattovábbítási igények kielégítésére. Az IoT Edge-en futó Stream Analytics kecsesen képes kezelni a sávszélesség korlátozását és a kapcsolati problémákat a rendszerben. A Stream Analytics akár 200 MB/s átviteli sebességre is képes az Azure Synapse Analyticsbe való írás során.
Valós idejű adatok archiválása elemzéshez
A legtöbb adatelemzési és adatelemzési tevékenység továbbra is offline állapotban történik. Az Azure Stream Analytics adatait az Azure Data Lake Store Gen2 kimenetén és Parquet kimeneti formátumain keresztül archiválhatja. Ez a funkció megszünteti a súrlódást az adatok közvetlenül az Azure Data Lake Analyticsbe, az Azure Databricksbe és az Azure HDInsightba való betöltéséhez. Az Azure Stream Analytics közel valós idejű Extract-Transform-Load (ETL) motorként használható ebben a megoldásban. A Data Lake-ben az archivált adatokat különböző számítási motorokkal vizsgálhatja meg.
Referenciaadatok használata bővítéshez
Az adatdúsítás gyakran követelmény az ETL-motorok esetében. Az Azure Stream Analytics az SQL Database-ből és az Azure Blob Storage-ból származó referenciaadatokkal támogatja az adatbővítést. Az adatdúsítás az Azure Data Lake-ben és az Azure Synapse Analyticsben is elvégezhető az adatlerakodáshoz.
Elemzések üzembe helyezése archivált adatokból
Ha az offline elemzési mintát a közel valós idejű alkalmazásmintával kombinálja, létrehozhat egy visszajelzési ciklust. A visszajelzési ciklus lehetővé teszi, hogy az alkalmazás automatikusan módosítsa az adatok mintáit. Ez a visszajelzési ciklus lehet olyan egyszerű, mint a riasztás küszöbértékének módosítása, vagy olyan összetett, mint az újratanítási gépi Tanulás modellek. Ugyanez a megoldásarchitektúra alkalmazható a felhőben és az IoT Edge-en futó ASA-feladatokra is.
ASA-feladatok monitorozása
Az Azure Stream Analytics-feladat 24/7-ben futtatható a bejövő események folyamatos valós idejű feldolgozásához. Az üzemidő-garancia kulcsfontosságú az általános alkalmazás állapota szempontjából. Bár a Stream Analytics az iparág egyetlen streamelemzési szolgáltatása, amely 99,9%-os rendelkezésre állási garanciát nyújt, továbbra is némi leállási idő áll rendelkezésre. A Stream Analytics az évek során metrikákat, naplókat és feladatállapotokat vezetett be a feladatok állapotának megfelelően. Ezek mindegyike az Azure Monitor szolgáltatáson keresztül kerül felszínre, és tovább exportálható az OMS-be. További információ: Stream Analytics-feladat monitorozása az Azure Portalon.
Két fontos dolgot kell figyelni:
-
Először is győződjön meg arról, hogy a feladat fut. A futó állapotú feladat nélkül nem jön létre új metrikák vagy naplók. A feladatok különböző okokból hibás állapotba válthatnak, például magas su-kihasználtsági szinttel (vagyis az erőforrások elfogyása).
-
Ez a metrika azt tükrözi, hogy a feldolgozási folyamat milyen messze van a falióra-idő (másodperc) alatt. A késés egy része az eredendő feldolgozási logikának van tulajdonítható. Ennek eredményeképpen a növekvő trend monitorozása sokkal fontosabb, mint az abszolút érték monitorozása. Az állandó állapot késleltetését az alkalmazástervnek kell kezelnie, nem pedig figyeléssel vagy riasztásokkal.
Hiba esetén a tevékenységnaplók és a diagnosztikai naplók a legjobb helyek a hibákkereséshez.
Rugalmas és kritikus fontosságú alkalmazások létrehozása
Az Azure Stream Analytics SLA-garanciától és a végpontok közötti alkalmazás futtatásának gondosságától függetlenül leállások történnek. Ha az alkalmazás kritikus fontosságú, fel kell készülnie a kimaradásokra a zökkenőmentes helyreállítás érdekében.
Az alkalmazások riasztásához a legfontosabb dolog a következő riasztás észlelése. A korábbi riasztások figyelmen kívül hagyásával az aktuális időponttól kezdve újraindíthatja a feladatot. A feladat kezdési ideje szemantikája az első kimeneti idő, nem pedig az első bemeneti idő. A bemenet visszafelé haladva megfelelő mennyiségű időt fordít, hogy a megadott időpontban az első kimenet teljes és helyes legyen. Emiatt nem kap részleges összesítéseket, és nem aktiválja váratlanul a riasztásokat.
Dönthet úgy is, hogy a kimenetet a múltban eltelt időből indítja el. Az Event Hubs és az IoT Hub adatmegőrzési szabályzatai is ésszerű mennyiségű adatot tárolnak, hogy lehetővé tegyék a múltból való feldolgozást. A kompromisszum az, hogy milyen gyorsan utolérheti az aktuális időpontot, és elkezdhet időben új riasztásokat létrehozni. Az adatok idővel gyorsan elveszítik az értéküket, ezért fontos, hogy gyorsan felzárkóztassunk az aktuális időponthoz. A gyors felzárkózásnak két módja van:
- További erőforrások (SU) kiépítése a felzárkózás során.
- Indítsa újra az aktuális időpontot.
A jelenlegi időponttól való újraindítás egyszerűen elvégezhető, mert a feldolgozás során rést kell hagynia. Az ily módon történő újraindítás riasztási forgatókönyvek esetén rendben lehet, de az irányítópult-forgatókönyvek esetében problémás lehet, és nem kezdő megoldás az archiválási és adattárházi forgatókönyvekhez.
A további erőforrások kiépítése felgyorsíthatja a folyamatot, de a feldolgozási sebesség megugrásának hatása összetett.
Ellenőrizze, hogy a feladat méretezhető-e nagyobb számú termékváltozatra. Nem minden lekérdezés méretezhető. Győződjön meg arról, hogy a lekérdezés párhuzamos.
Győződjön meg arról, hogy elegendő partíció található a felsőbb rétegbeli Event Hubsban vagy az IoT Hubban, hogy további átviteli egységeket (TU-kat) adhat hozzá a bemeneti átviteli sebesség skálázásához. Ne feledje, hogy minden Event Hubs TU 2 MB/s kimeneti sebességgel maximális.
Győződjön meg arról, hogy elegendő erőforrást adott ki a kimeneti fogadókban (vagyis AZ SQL Database-ben, az Azure Cosmos DB-ben), hogy azok ne okozzák a kimeneti túlfeszültséget, ami néha a rendszer zárolását okozhatja.
A legfontosabb, hogy előre jelezd a feldolgozási sebesség változását, teszteld ezeket a forgatókönyveket, mielőtt éles környezetbe kerülnél, és készen kell állni a feldolgozás megfelelő skálázására a sikertelen helyreállítási idő alatt.
Abban a szélsőséges esetben, amikor a bejövő események mind késnek, lehetséges, hogy az összes késleltetett esemény el lesz ejtve , ha késedelmes érkezési ablakot alkalmazott a feladatra. Az események elvetése kezdetben rejtélyes viselkedésnek tűnhet; Mivel azonban a Stream Analytics egy valós idejű feldolgozó motor, elvárja, hogy a bejövő események közel legyenek a falióra idejéhez. El kell dobnia azokat az eseményeket, amelyek megsértik ezeket a korlátozásokat.
Lambda-architektúrák vagy backfill folyamat
Szerencsére az előző adatarchiválási minta használható ezeknek a késői eseményeknek a kecses feldolgozására. Az ötlet az, hogy az archiválási feladat az érkezési időben dolgozza fel a bejövő eseményeket, és az eseményeket az Azure Blob vagy az Azure Data Lake Store megfelelő időgyűjtőjébe dolgozza fel az eseményidejükkel együtt. Nem számít, hogy milyen későn érkezik egy esemény, soha nem lesz elvetve. Mindig a megfelelő időben fog leszállni. A helyreállítás során újra feldolgozhatja az archivált eseményeket, és az eredményeket visszaküldheti a választott tárolóba. Ez hasonló a lambda-minták implementálásához.
A visszatöltési folyamatot offline kötegfeldolgozó rendszerrel kell elvégezni, amely valószínűleg más programozási modellel rendelkezik, mint az Azure Stream Analytics. Ez azt jelenti, hogy újra kell alkalmaznia a teljes feldolgozási logikát.
A visszatöltéshez továbbra is fontos, hogy legalább ideiglenesen több erőforrást építsünk ki a kimeneti fogadók számára, hogy nagyobb átviteli sebességet kezelhessenek, mint az állandó állapot feldolgozási igényei.
Forgatókönyvek | Újraindítás mostantól csak | Újraindítás a legutóbbi leállított időponttól | Újraindítás mostantól + visszatöltés archivált eseményekkel |
---|---|---|---|
Irányítópultok | Hézagot hoz létre | OK rövid leállás esetén | Hosszú üzemkimaradás esetén használható |
Riasztások kezelése | Elfogadható | OK rövid leállás esetén | Nem szükséges |
Esemény-forrásalkalmazás | Elfogadható | OK rövid leállás esetén | Hosszú üzemkimaradás esetén használható |
Adattárház | Adatvesztés | Elfogadható | Nem szükséges |
Offline elemzés | Adatvesztés | Elfogadható | Nem szükséges |
Végső összeállítás
Nem nehéz elképzelni, hogy a korábban említett megoldásminták egy összetett, teljes körű rendszerben kombinálhatók. A kombinált rendszer tartalmazhat irányítópultokat, riasztásokat, esemény-forrásalkalmazásokat, adattárházakat és offline elemzési képességeket.
A legfontosabb, hogy a rendszer összeállítási mintákkal legyen megtervezve, így az egyes alrendszerek egymástól függetlenül is felépíthetők, tesztelhetők, frissíthetők és helyreállíthatók.
Következő lépések
Most már különböző megoldásmintákat láthatott az Azure Stream Analytics használatával. Ezután megismerheti a részleteket, és létrehozhatja első Stream Analytics-feladatát: