Azure Cosmos DB IoT-számítási feladatokban

Azure Cosmos DB
Azure Databricks
Azure Functions
Azure IoT Hub
Power BI

Ez a cikk egy IoT-számítási feladatot ismertet, amely az Azure Cosmos DB adatbázis-szolgáltatás számos funkciójára támaszkodik. Az Azure Cosmos DB egy többmodelles adatbázis, amely globális elosztáshoz és horizontális skálázáshoz készült.

A globális terjesztés transzparens módon skálázza és replikálja az adatokat az Azure-régiók között. Világszerte skálázhatja az átviteli sebességet és a tárolást, és csak a szükséges összegért fizethet. Az azonnali rugalmas skálázás változatos és kiszámíthatatlan IoT-számítási feladatokat biztosít anélkül, hogy feláldozná a betöltési vagy lekérdezési teljesítményt.

Az Azure Cosmos DB ideális IoT-számítási feladatokhoz, mivel a következőkre képes:

  • Nagy sebességgel betölti az eszköz telemetriai adatait, és alacsony késéssel és magas rendelkezésre állással adja vissza az indexelt lekérdezéseket.
  • JSON-formátum tárolása különböző eszközgyártóktól, ami rugalmasságot biztosít a hasznos adatok sémájában.
  • A Cassandra, a MongoDB, az SQL, a Gremlin stb. és a táblaadatbázisok wire protocol-kompatibilis API-végpontjaival, valamint a Jupyter Notebook-fájlok beépített támogatásával.

Lehetséges használati esetek

  • A beépített, globálisan elosztott Azure Cosmos DB-képességek használatával alacsony késésű írási-olvasási műveleteket engedélyezhet a rugalmas IoT-alkalmazásokhoz.
  • Az eszközök gyártóinak és adattípusainak széles választékából származó adatok kezelése.

Architektúra

Az Azure Cosmos DB azure IoT-megoldásarchitektúrában betöltött szerepét bemutató ábra.Töltse le az architektúra Visio-fájlját.

Adatfolyam

  1. Az IoT-érzékelők és az Edge-eszközök üzenetstreamekként küldenek eseményeket az Azure IoT Hubon keresztül az elemzési és átalakítási rétegbe. Az IoT Hub egy adott időtartamon keresztül képes az adatfolyamok partíciókban való tárolására.

  2. Az Apache Spark strukturált streamelt Azure Databricks valós időben veszi fel az üzeneteket az IoT Hubról, üzleti logika alapján dolgozza fel az adatokat, és elküldi az adatokat a tárolóba. A strukturált streamelés valós idejű elemzéseket biztosít, például a mozgóátlagok vagy a minimális és maximális értékek kiszámítását az időszakok során.

  3. Az Azure Cosmos DB JSON-dokumentumként tárolja az eszközüzeneteket a gyakori elérésű adattárban. Az Azure Cosmos DB különböző eszközgyártók JSON-sémái alapján érvényesíthető.

    A tárolási réteg a következőkből is áll:

    • Azure Blob Storage. Az IoT Hub üzenet-útválasztása a nyers eszközüzeneteket a Blob Storage-ba menti, így olcsó, hosszú távú ritka elérésű adattárat biztosít.
    • Az Azure SQL Database tranzakciós és relációs adatok, például számlázási adatok és felhasználói szerepkörök tárolására szolgál.
    • Az Azure Data Factory által feltöltött Azure Synapse Analytics-adattárház az Azure Cosmos DB-ből és az Azure SQL DB-ből származó adatokat összesíti.
  4. A Microsoft Power BI elemzi az adattárházat.

  5. A bemutató réteg a tárolási rétegből származó adatokat használja web-, mobil- és API-alkalmazások létrehozásához.

  6. Amikor új vagy frissített eszközüzenet érkezik, az Azure Cosmos DB változáscsatorna aktivál egy Azure Functions-függvényt.

  7. A függvény meghatározza, hogy az üzenethez szükség van-e eszközműveletre, például újraindításra. Ha igen, a függvény az IoT Hub Service API használatával csatlakozik az IoT Hubhoz, és elindítja az eszközműveletet. A függvény ikereszközökkel, felhőből eszközüzenetekbe vagy közvetlen metódusokkal indíthatja el a műveletet.

Összetevők

Ez a számítási feladat a következő Azure-összetevőket használja:

Azure Cosmos DB

Ez az IoT-számítási feladat az Azure Cosmos DB-t, egy globálisan elosztott, többmodelles adatbázist emeli ki. A számítási feladat az alábbi Azure Cosmos DB-funkciókat használja:

  • Konzisztenciaszintek. Az Azure Cosmos DB öt olvasási konzisztenciaszintet támogat a legerősebbtől a leggyengébbig: Erős, korlátozott elavultság, munkamenet, konzisztens előtag és végleges. Az erősebb konzisztencia általában alacsonyabb rendelkezésre állást, hosszabb késést és alacsonyabb átviteli sebességet eredményez. A számítási feladatokra vonatkozó követelmények alapján konzisztenciaszintet is választhat.

  • Élettartam (TTL). Az Azure Cosmos DB bizonyos idő elteltével automatikusan törölheti az elemeket egy tárolóból. Ez a funkció lehetővé teszi, hogy az Azure Cosmos DB gyakran használt adattárként szolgáljon a legutóbbi adatokhoz, és hosszú távú adatokat tároljon az Azure Blob hűtőtárolójában.

  • Változáscsatorna. A változáscsatorna szolgáltatás a módosított dokumentumok rendezett listáját adja ki a módosítások sorrendjében. Az Azure Cosmos DB-tároló változáscsatornájának minden új eseménye automatikusan aktivál egy kis reaktív Azure Functions-függvényt. A JSON-dokumentum tartalmától függően a függvény csatlakozhat az Azure IoT Hub Service API-hoz, és végrehajthat egy műveletet az eszközön.

  • Kérelemegységek (kérelemegységek). A kérelemegységek olyan számítási egységek, amelyek az Azure Cosmos DB átviteli sebességét mérik. A kérelemegységek használatával dinamikusan skálázhatja felfelé és lefelé az Azure Cosmos DB-t, miközben fenntartja a rendelkezésre állást, és optimalizálja a költségeket és a teljesítményt.

  • Particionálás. A partíciókulcs határozza meg, hogy az Azure Cosmos DB hogyan irányítja az adatokat a partíciókban. Az IoT-eszközazonosító az IoT-alkalmazások szokásos partíciókulcsa.

Egyéb Azure-összetevők

A megoldás a következő Azure-összetevőket is használja:

  • Az Azure IoT Edge a peremhálózaton futtat alkalmazásokat, például gépi tanulási modelleket.

  • Az Azure IoT Hub felhőátjáróként működik, és nagy léptékben betölti az eszköz telemetriáját. Az IoT Hub támogatja az eszközök felé irányuló kommunikációt, így a műveletek a felhőből az IoT Edge-be küldhetők az eszközre.

  • Az Azure Databricks és a Spark Structured Streaming egy skálázható, hibatűrő streamfeldolgozó rendszer, amely natív módon támogatja a kötegelt és streamelési számítási feladatokat. Az Azure Databricks az átalakítási és elemzési réteg, és az azure-eventhubs-spark_2.11:2.3.6 Maven kódtár használatával csatlakozik az IoT Hub eseményközponttal kompatibilis végponthoz.

  • Az Azure Blob Storage skálázható, olcsó, hosszú távú hideg adattárolást biztosít strukturálatlan adatokhoz.

  • Az Azure SQL Database a tranzakciós és egyéb nem IoT-adatok relációs adatbázisa.

  • Az Azure Synapse Analytics egy adattárház- és jelentéskészítési platform nagyvállalati adattárházakhoz és big data-elemzésekhez. A Synapse Analytics az Azure SQL Database és az Azure Cosmos DB összesített adatait tartalmazza.

    Az Azure Cosmos DB-hez készült Azure Synapse Link közel valós idejű elemzést tesz lehetővé az Azure Cosmos DB működési adatain anélkül, hogy a tranzakciós számítási feladatok teljesítményére vagy költségeire hatással lenne. A Synapse Link az Azure Synapse-munkaterületen található két elemzési motort használja: az SQL Kiszolgáló nélküli és a Spark-készleteket.

  • A Power BI egy üzleti elemzési eszközcsomag az adatok elemzéséhez és az elemzések megosztásához. A Power BI lekérdezheti az Azure Analysis Servicesben tárolt szemantikai modellt, vagy közvetlenül lekérdezheti a Synapse Analyticset.

  • Azure-alkalmazás szolgáltatás webes és mobilalkalmazásokat készít. Az Azure API App lehetővé teszi, hogy a külső alkalmazások api-kat használjanak a kiszolgáló réteg adatai alapján.

  • Az Azure Functions egy eseményvezérelt, kiszolgáló nélküli számítási platform, amely nagy léptékben működhet a felhőben, és triggerek és kötések használatával integrálhatja a szolgáltatásokat. Az Azure Functions lefordíthatja az IoT-üzenetformátumokat, vagy műveleteket indíthat el az Azure Cosmos DB változáscsatornához való csatlakozáskor.

Alternatívák

  • Az Azure Databricks helyett az átalakítási és elemzési réteg a HDInsight Storm, a HDInsight Spark vagy az Azure Stream Analytics használatával végez streamelemzést, és az Azure Functions használatával átalakíthatja az üzenet hasznos adatait.

  • A szolgáltatás tárolási rétege az Azure Data Explorert használhatja az IoT-üzenetek tárolására. Ez a szolgáltatás gazdag elemzési képességekkel is rendelkezik.

Megfontolások

Az Azure Cosmos DB 20 GB-os korlátot biztosít egyetlen logikai partícióhoz. A legtöbb IoT-megoldás esetében ez a méret elegendő. Ha nem, a következőt teheti:

  • Állítsa be a partíciókulcsot egy mesterséges mezőre, és rendeljen hozzá egy összetett értéket, például eszközazonosítót + aktuális hónapot és évet. Ez a stratégia magas értékű számosságot biztosít a jó partíciótervezéshez. További információ: Partíciókulcs kiválasztása.

  • Az adatok életciklusa alapján áthelyezheti a régebbi Azure Cosmos DB-adatokat a hideg tárolóba, például az Azure Blob Storage-ba. A változáscsatorna kombinációjával replikálhatja az adatokat a hűtőtárolóba, a TTL pedig automatikusan törölhet adatokat egy tárolóból egy bizonyos idő elteltével.

Következő lépések