Skala direkt och elastiskt och hantera olika typer av oförutsedda IoT-arbetsbelastningar, utan att göra avkall på inmatning och frågeprestanda.
Azure Cosmos DB är Microsofts globalt distribuerade databas för flera datamodeller. Azure Cosmos DB har byggts från grunden med global distribution och horisontell skalning i grunden. Den erbjuder nyckelfärdig global distribution över valigt antal Azure-regioner genom transparent skalning och replikering av data oavsett var användarna befinner sig. Du kan elastiskt skala dataflöde och lagringsutrymme över hela världen och endast betala för det dataflöde och den lagring du behöver.
Cosmos DB passar utmärkt för IoT-lösningar. Cosmos DB kan mata in enhetsdata med hög hastighet och kan hantera indexerade frågor tillbaka med kort svarstid och hög tillgänglighet.
Cosmos DB är en databas med flera modeller med trådprotokollkompatibla API-slutpunkter för Cassandra, MongoDB, SQL, Gremlin, Etcd och Table samt inbyggt stöd för Jupyter Notebook-filer.
Arkitektur
Dataflöde
- Händelser som genereras från IoT-enheter skickas till analys- och transformeringslagret via Azure IoT Hub som en ström av meddelanden. Azure IoT Hub lagrar dataströmmar i partitioner under en konfigurerbar tid.
- Azure Databricks, som kör Apache Spark Streaming, hämtar meddelanden i realtid från IoT Hub, bearbetar data baserat på affärslogiken och skickar data till betjänande lager för lagring. Spark Streaming kan tillhandahålla realtidsanalys som att beräkna glidande medelvärden, minsta och högsta värden över tidsperioder.
- Enhetsmeddelanden lagras i Cosmos DB JSON-dokument. Detta anses vara det heta datalagret. Olika JSON-scheman som representerar olika enhetsleverantörer kan lagras i Cosmos DB eller konverteras till ett kanoniskt JSON-schema.
- Lagringsskiktet består av:
- Azure Blob Storage – IoT Hub-meddelanderoutning kan spara råa IoT-enhetsmeddelanden till Azure Blob Storage, vilket gör att Blob Storage kan fungera som ett kostnadseffektivt, långsiktigt kalldatalager.
- Azure SQL Database – Använd Azure SQL för att lagra dina transaktions- och relationsdata (till exempel faktureringsdata, användarroller).
- Azure Synapse Analytics (tidigare Azure SQL Data Warehouse) – För ditt informationslager för lösningen. Fyllt i den med Azure Data Factory med aggregerade data från Cosmos DB och Azure SQL.
- Microsoft Power BI kan användas av dina användare för att analysera informationslager.
- Webb-, mobil- och andra program kan byggas på lagringslagret. Du kan till exempel exponera API:er baserat på lagringslagerdata för användning från tredje part.
- Använd Cosmos DB för att köra en Azure-funktion varje gång ett enhetsmeddelande läggs till eller uppdateras i Cosmos DB.
- Vissa enhetsmeddelanden (till exempel en felkod) kan kräva att en åtgärd utförs på enheten. Med hjälp Azure IoT Hub Service-API:et kan Azure-funktionen ansluta till Azure IoT Hub och utföra en åtgärd på enheten (till exempel starta om) med hjälp av antingen:
- Enhetstvillingar
- Meddelanden från moln till enhet
- Direktmetoder
Komponenter
I den här arkitekturen används följande Azure-komponenter:
- Azure IoT Hub fungerar som molngateway och matar in enhettelemetri i stor skala. IoT Hub har även stöd för dubbelriktad kommunikation tillbaka till enheter, vilket gör att åtgärder kan skickas från molnet eller Azure IoT Edge till enheten. Azure IoT Edge kan användas för att köra program på gränsen, till exempel maskininlärningsmodeller.
- Azure Databricks med Apache Spark Streaming finns i omvandlings- och analyslagret. Databricks använder Maven-biblioteket azure-eventhubs-spark_2.11:2.3.6 för att ansluta till IoT Hub event hub-kompatibla slutpunkt. Apache Spark Streaming är ett skalbart feltolerant system för strömmande bearbetning som har inbyggt stöd för både batchbaserade och strömmande arbetsbelastningar.
- Azure Cosmos DB är en globalt distribuerad databas för flera modeller.
- Konsekvensnivåer – Cosmos DB har stöd för 5 konsekvensnivåer (stark, begränsad föråldring, session, konsekvent prefix, eventuell) så att du kan kompromissa mellan läskonsekvens kontra tillgänglighet, svarstid och dataflöde.
- TTL - Azure Cosmos DB ger möjlighet att ta bort objekt automatiskt från en container efter en viss tidsperiod. Detta gör Cosmos DB fungerar som ett hett datalager för senaste data, med långsiktiga data som lagras i Azure Blob Cold Storage.
- Ändringsflöde – Visar en sorterad lista över dokument som har ändrats i den ordning som de ändrades. Du kan skapa små reaktiva Azure Functions som utlöses automatiskt för varje ny händelse i Azure Cosmos-containerns ändringsflöde. Beroende på innehållet i JSON-dokumentet kan Azure-funktionen ansluta till api:et för Azure IoT Hub-tjänsten och utföra en åtgärd på enheten med hjälp av enhetstvilling, meddelandefunktion från moln till enhet eller direktmetoder.
- Enhet för databegäran (RU) – Är måttet på dataflödet i Azure Cosmos DB. RU:er är beräkningsenheter för både prestanda och kostnad. Med RU:er kan du dynamiskt skala upp och ned samtidigt som du behåller tillgängligheten, vilket optimerar för kostnader, prestanda och tillgänglighet på samma gång.
- Partitionering – partitionsnyckeln är det som avgör hur data dirigeras i de olika partitionerna av Cosmos DB och måste vara meningsfullt i kontexten för ditt specifika scenario. IoT-enhetens ID är vanligtvis den "naturliga" partitionsnyckeln för IoT-program.
- Azure SQL Database är relationsdatabasen för transaktionsdata och andra icke-IoT-data.
- Azure Synapse Analytics är informationslager- och rapporteringsplattformen som innehåller aggregerade data från Azure SQL och Cosmos DB. För informationslager i företag och stordataanalys.
- med Azure Synapse Link för Azure Cosmos DB kan du köra analys i nära realtid över driftdata i Azure Cosmos DB utanprestanda- eller kostnadspåverkan på transaktionsarbetsbelastningen med hjälp av de två analysmotorer som är tillgängliga från Azure Synapse-arbetsytan: SQL Serverlösa pooler och Spark-pooler.
- Power BI är en uppsättning affärsanalysverktyg för att analysera data och dela insikter. Power BI kan fråga en semantisk modell som lagras i Azure Analysis Services, eller så kan den fråga Azure Synapse direkt.
- Azure App Services kan användas för att skapa webb- och mobilprogram. Azure API App kan användas för att exponera data för tredje part, baserat på de data som lagras i det betjänande lagret.
- Azure Functions kan användas för att översätta IoT-meddelandenyttolaster (till exempel från binär till JSON) eller utlösa åtgärder när du är ansluten till Cosmos DB ändringsflöde. Azure Functions är en händelsedriven serverlös beräkningsplattform. Utveckla och felsök lokalt utan ytterligare konfiguration, distribuera och använd i stor skala i molnet och integrera tjänster med utlösare och bindningar.
Alternativ
- I transformations- och analyslagret skulle vi kunna använda HDInsight Storm,HDInsight Spark eller Azure Stream Analytics för att utföra strömningsanalys och Azure Functions för att utföra omvandlingar av meddelandenyttolaster.
- I tjänstlagringslagret kan Azure Data Exploreroch Time Series Insights användas för att lagra IoT-meddelanden. Båda dessa tjänster ger också omfattande analysfunktioner.
- Synapse Link är Microsofts föredragna lösning för analys utöver Cosmos DB data.
Överväganden
- Cosmos DB har en gräns på 20 GB (tidigare var den 10 GB) för en enda logisk partition. För de flesta IoT-lösningar räcker den här storleken. Annars rekommenderar vi antingen:
- Ange partitionsnyckeln till ett artificiellt fält och tilldela ett sammansatt värde (till exempel Enhets-ID + Aktuell månad och År). Detta säkerställer en mycket hög kardinalitet för värden.
- Nivåindelad Cosmos DB-data till kall lagring (till exempel Azure Blob Storage) med en kombination av TTL för att automatiskt rensa data från Cosmos DB och ändra feed för att replikera data till kall lagring.
Nästa steg
Läs följande artiklar om IoT och Cosmos DB.