IoT a Cosmos DB használatával

Cosmos DB
Databricks
Functions
IoT Hub
Power BI

Azonnali és rugalmas skálázhatósággal kezelheti a változatos és kiszámíthatatlan IoT-terheléseket a feldolgozás vagy a lekérdezés teljesítményének feláldozása nélkül.

Azure Cosmos DB a Microsoft globálisan elosztott, többmodelles adatbázisa. Azure Cosmos DB az ajtaja az ajtaja, a globális elosztás és a magon horizontális skálázva lett felépítve. Kulcsrakész globális terjesztést kínál számos Azure-régió között az adatok átlátható skálázása és replikálása által, bárhol legyenek is a felhasználók. Az átviteli sebességet és a tárterületet világszerte rugalmasan skálázhatja, és csak a szükséges átviteli sebességért és tárterületért kell fizetnie.

Cosmos DB ideális IoT-megoldásokhoz. Cosmos DB nagy sebesség mellett tudja betölteni az eszköz telemetriai adatait, és alacsony késésű és magas rendelkezésre állású indexelt lekérdezéseket képes kiszolgálni.

Cosmos DB egy többmodelles adatbázis, amely vonali protokollokkal kompatibilis API-végpontokat tartalmaz a Cassandra, a MongoDB, az SQL, a Gremlin, etcd és a Table szolgáltatáshoz, valamint beépített támogatást nyújt a Jupyter Notebook fájlokhoz.

Architektúra

Architektúra

Adatfolyam

  1. Az IoT-eszközökből létrehozott eseményeket a rendszer az elemzés és átalakítás rétegbe küldi, Azure IoT Hub streamként küldi el. Azure IoT Hub adatstreameket partíciókban tárolja egy konfigurálható ideig.
  2. Azure Databricks streamelési Apache Spark futó IoT Hub valós időben felveszi az üzeneteket, feldolgozza az adatokat az üzleti logika alapján, és elküldi az adatokat a Kiszolgáló rétegbe tárolásra. A Spark Streaming valós idejű elemzéseket biztosít, például a mozgóátlagok, a minimális és a maximális értékek adott időszakokra vonatkozó kiszámítását.
  3. Az eszközüzenetek JSON-Cosmos DB tárolódnak. Ez a forró adattárnak számít. A különböző eszközszállítókat képviselő különböző JSON-sémák tárolhatók a Cosmos DB, vagy konvertálhatók canonikus JSON-sémává.
  4. A tárolási réteg a következőkből áll:
    • Azure Blob Storage – a IoT Hub üzenetek útválasztása a nyers IoT-eszközüzeneteket az Azure Blob Storage-ba mentheti, így a Blob Storage költséghatékony, hosszú távú, hideg adattárként működik.
    • Azure SQL Database – Az Azure SQL a tranzakciós és relációs adatok (például számlázási adatok, felhasználói szerepkörök) tárolására.
    • Azure Synapse Analytics (korábban Azure SQL Data Warehouse) – a megoldás adattárháza számára. A rendszer a Azure Data Factory adatokkal tölti fel a Cosmos DB Azure SQL.
  5. A microsoftos Power BI a felhasználók a raktárban található adatok elemzésére is használhatók.
  6. A webes, mobil- és egyéb alkalmazások a tárolási rétegre épülnek. Elérhetővé teheti például az API-kat a tárolási réteg adatai alapján külső használatra.
  7. A Cosmos DB a változáscsatorna használatával végrehajthat egy Azure-függvényt minden alkalommal, amikor eszközüzenetet adnak hozzá vagy frissítnek Cosmos DB.
  8. Egyes eszközüzenetek (például a hibakódok) esetében beavatkozásra lehet szükség az eszközön. A Azure IoT Hub Service API használatával az Azure-függvény csatlakozhat a Azure IoT Hub és műveleteket hajthat végre az eszközön (például újraindíthatja őket) a következő két módszer valamelyikével:
    • Ikereszközök
    • Felhőből eszközre küldött üzenetek
    • Közvetlen metódusok

Összetevők

Ez az architektúra az alábbi Azure-összetevőket használja:

  • Azure IoT Hub felhőátjáróként működik, és nagy léptékben továbbítja az eszköz telemetriai adatokat. IoT Hub támogatja az eszközökre visszaküldött kétirányú kommunikációt is, így műveleteket lehet küldeni a felhőből vagy Azure IoT Edge az eszközre. Azure IoT Edge alkalmazásokat, például gépi tanulási modelleket futtathat a peremhálózaton.
  • Azure Databricks streamelés Apache Spark az átalakítási és elemzési rétegben található. A Databricks az azure-eventhubs-spark_2.11:2.3.6 Maven kódtárat használja az IoT Hub Event Hub-kompatibilis végponthoz való csatlakozáshoz. Apache Spark Streaming egy skálázható, hibatűrő streamfeldolgozó rendszer, amely natív módon támogatja a kötegelt és a streamelési számítási feladatokat is.
  • Azure Cosmos DB globálisan elosztott, többmodelles adatbázis.
    • Konzisztenciaszintek – a Cosmos DB 5 konzisztenciaszintet támogat (Erős, Korlátozott elatagság, Munkamenet, Konzisztens előtag, Tartós), ami lehetővé teszi az olvasási konzisztencia és a rendelkezésre állás, késés és átviteli sebesség közötti megfelelő kapcsolatot.
    • TTL – Azure Cosmos DB lehetővé teszi elemek automatikus törlését egy tárolóból egy bizonyos idő után. Ez lehetővé Cosmos DB, hogy a felhasználók a legutóbbi adatok gyors adattárként szolgálnak, és hosszú távú adatokat tároljanak az Azure Blob-beli hidegen tárolt adatokkal.
    • Változáscsatorna – A módosítás sorrendjében módosított dokumentumok egy rendezett listáját tartalmazza. Létrehozhat kis reaktív Azure Functions amelyek automatikusan aktiválódnak az Azure Cosmos-tároló változáscsatornája minden új eseményén. A JSON-dokumentum tartalmától függően az Azure-függvény csatlakozhat a Azure IoT Hub Service API-hoz, és műveletet hajthat végre az eszközön ikereszköz, felhőből eszköz közötti üzenetkezelés vagy közvetlen metódusok használatával.
    • Kérelemegység (RU) – Az átviteli sebesség mértéke a Azure Cosmos DB. A ru-k teljesítmény- és költségszámítási egységek. A ru-k segítségével dinamikusan skálázhat fel- és leskálásokat a rendelkezésre állás fenntartása mellett, és egyszerre optimalizálhatja a költségeket, a teljesítményt és a rendelkezésre állást.
    • Particionálás – A partíciókulcs határozza meg, hogy az adatok hogyan lesznek irányítva a különböző partíciókban Cosmos DB és az adott forgatókönyv kontextusában logikusnak kell lennie. Az IoT-eszközazonosító általában az IoT-alkalmazások "természetes" partíciókulcsa.
  • Azure SQL Database a tranzakciós és egyéb nem IoT-adatok relációs adatbázisa.
  • Azure Synapse Analytics az adatraktár- és jelentéskészítési platform, amely az Azure-beli virtuális SQL és Cosmos DB. Vállalati adatraktározáshoz és big data elemzéshez.
  • A Azure Synapse Link for Azure Cosmos DB segítségével közel valós idejű elemzéseket futtathat az operatív adatokon az Azure Cosmos DB-ban anélkül, hogy bármilyen teljesítményre vagy költségre hatással lenne a tranzakciós számítási feladatra, a Azure Synapse-munkaterületről elérhető két elemzési motor használatával: SQL Kiszolgáló nélküli és Spark-készletek.
  • Power BI egy üzleti elemzőeszköz-csomag, amely adatokat elemez és elemzéseket oszt meg. Power BI lekérdezhet egy, a Azure Analysis Services tárolt szemantikai modellt, vagy közvetlenül Azure Synapse lekérdezést.
  • Az Azure App Services webes és mobilalkalmazások építéséhez használható. Az Azure API-alkalmazással harmadik feleknek is elérhetővé teheti az adatokat a kiszolgáló rétegben tárolt adatok alapján.
  • Azure Functions IoT-üzenetek hasznos adatának (például binárisról JSON-re) lefordítása, illetve műveletek aktiválása a változáscsatornához Cosmos DB eseményindítóval. Azure Functions egy eseményvezérelt, kiszolgáló nélküli számítási platform. További előkészületek nélkül, a helyszínen végezheti el a fejlesztést és a hibakeresést, nagy léptékben telepíthet és üzemeltethet a felhőben, valamint szolgáltatásokat integrálhat triggerek és kötések használatával.

Alternatív megoldások

Megfontolandó szempontok

  • Cosmos DB korlátja 20 GB (korábban 10 GB volt) egyetlen logikai partícióra. A legtöbb IoT-megoldáshoz elegendő ez a méret. Ha nem, akkor a következőket javasoljuk:
    • A partíciókulcs mesterséges mezőre való beállítása és összetett érték (például eszközazonosító + aktuális hónap és év) hozzárendelése. Ez biztosítja az értékek rendkívül nagy számosságát.
    • A régi Cosmos DB rétege az adatokat a hideg tárba (például az Azure Blob Storage-ba) TTL kombinációjával automatikusan lefúrja az adatokat az Cosmos DB-ból és a változáscsatornából az adatok hidegen tárolt tárolóba való replikálása érdekében.

Következő lépések

Tekintse át az IoT-ről és a Cosmos DB.