IoT s využitím služby Cosmos DB

Cosmos DB
Databricks
Functions
IoT Hub
Power BI

Využijte možnost okamžitého a elastického škálování pro zajištění různorodých a nepředvídatelných úloh IoT bez omezení výkonu dotazů nebo ingestování.Scale instantly and elastically to accommodate diverse and unpredictable IoT workloads without sacrificing ingestion or query performance.

Azure Cosmos DB je globálně distribuovaná databáze Microsoftu pro více modelů.Azure Cosmos DB is Microsoft’s globally distributed, multi-model database. Azure Cosmos DB byla od základu sestavena s globální distribucí a horizontálním škálováním na jádru.Azure Cosmos DB was built from the ground up with global distribution and horizontal scale at its core. Nabízí globální distribuci klíč napříč libovolným počtem oblastí Azure tím, že transparentně škáluje a replikuje vaše data všude, kde jsou vaši uživatelé.It offers turnkey global distribution across any number of Azure regions by transparently scaling and replicating your data wherever your users are. Můžete elasticky škálovat propustnost a úložiště po celém světě a platit jenom za propustnost a úložiště, které potřebujete.You can elastically scale throughput and storage worldwide, and pay only for the throughput and storage you need.

Cosmos DB je ideální pro řešení IoT.Cosmos DB is ideally suited for IoT solutions. Cosmos DB může ingestovat data telemetrie zařízení s vysokými sazbami a může obsluhovat indexované dotazy s nízkou latencí a vysokou dostupností.Cosmos DB can ingest device telemetry data at high rates and can serve indexed queries back with low latency and high availability.

Cosmos DB je databáze s více modely s použitím Cassandrach koncových bodů rozhraní API pro MongoDB, SQL, Gremlin, Etcd a tabulky společně s integrovanou podporou pro Jupyter Notebook soubory.Cosmos DB is a multi-model database with wire protocol–compatible API endpoints for Cassandra, MongoDB, SQL, Gremlin, Etcd, and Table along with built-in support for Jupyter Notebook files.

ArchitekturaArchitecture

Architektura

Data FlowData Flow

  1. Události vygenerované ze zařízení IoT se odesílají do vrstvy analyzovat a transformovat prostřednictvím Azure IoT Hub jako datový proud zpráv.Events generated from IoT devices are sent to the analyze and transform layer through Azure IoT Hub as a stream of messages. Azure IoT Hub ukládá streamy dat v oddílech, aby bylo možné určitou dobu konfigurovat.Azure IoT Hub stores streams of data in partitions for a configurable amount of time.
  2. Azure Databricks spouští streamování Apache Spark, ze IoT Hub zpracovává zprávy v reálném čase, zpracovává data na základě obchodní logiky a odesílá data do obsluhy úložiště.Azure Databricks, running Apache Spark Streaming, picks up the messages in real time from IoT Hub, processes the data based on the business logic and sends the data to Serving layer for storage. Datové proudy Sparku umožňují analýzu v reálném čase, jako je například výpočet klouzavých průměrů, minimální a maximální hodnoty v časových obdobích.Spark Streaming can provide real time analytics such as calculating moving averages, min and max values over time periods.
  3. Zprávy zařízení jsou uloženy v Cosmos DB jako dokumenty JSON.Device messages are stored in Cosmos DB as JSON documents. To je považováno za aktivní úložiště dat.This is considered the hot data store. Různá schémata JSON, která představují jiné dodavatele zařízení, mohou být uložena v Cosmos DB nebo převedena na kanonické schéma JSON.Different JSON schemas representing different device vendors can be stored in Cosmos DB or converted to a canonical JSON schema.
  4. Vrstva úložiště se skládá z těchto součástí:The storage layer consists of:
    • Směrování zpráv v Azure Blob Storage-IoT Hub může ukládat nezpracované zprávy zařízení IoT do úložiště objektů BLOB v Azure a umožnit tak službě BLOB Storage fungovat jako levné a dlouhodobé úložiště studených dat.Azure Blob Storage - IoT Hub message routing can save the raw IoT device messages to Azure Blob storage, allowing blob storage to act as an inexpensive, long-term cold data store.
    • Azure SQL Database – Využijte Azure SQL k ukládání transakčních a relačních dat (například fakturační data, role uživatelů).Azure SQL Database - Utilize Azure SQL for storing your transactional and relational data (for example, billing data, user roles).
    • Azure synapse Analytics (dříve Azure SQL Data Warehouse) – pro datový sklad řešení.Azure Synapse Analytics (Previously Azure SQL Data Warehouse) - For your solution data warehouse. Naplněné pomocí Azure Data Factory pomocí agregovaných dat z Cosmos DB a Azure SQL.Populated it using Azure Data Factory using aggregated data from Cosmos DB and Azure SQL.
  5. Microsoft Power BI můžou použít vaši uživatelé k analýze dat z datového skladu.Microsoft Power BI can be used by your users to analyze warehoused data.
  6. Webové, mobilní a jiné aplikace mohou být postaveny na vrstvě úložiště.Web, mobile and other applications can be built on the storage layer. Můžete například vystavit rozhraní API na základě dat vrstvy úložiště pro použití třetích stran.For example, you can expose APIs based on the storage layer data for third-party uses.
  7. Pokaždé, když se v Cosmos DB přidá nebo aktualizuje zpráva zařízení, použijte ke spuštění funkce Azure Functions Cosmos DB.Use Cosmos DB Change Feed to execute an Azure Function each time a device message is added or updated in Cosmos DB.
  8. Některé zprávy zařízení (například kód chyby) můžou vyžadovat, aby se na zařízení prováděla akce.Some device messages (for example, a fault code) may require an action to be performed on the device. Pomocí rozhraní API služby Azure IoT Hub se může služba Azure Functions připojit k Azure IoT Hub a provést na zařízení akci (třeba restartování) pomocí těchto akcí:Using the Azure IoT Hub Service API, the Azure Function can connect to Azure IoT Hub and perform an action on the device (for example, reboot) using either:
    • Dvojčata zařízeníDevice Twins
    • Zprávy z cloudu do zařízeníCloud to Device messages
    • Přímé metodyDirect Methods

KomponentyComponents

Tato architektura používá následující součásti Azure:This architecture uses the following Azure components:

  • Azure IoT Hub funguje jako cloudová brána, která ingestuje telemetrii zařízení ve velkém měřítku.Azure IoT Hub acts as the cloud gateway, ingesting device telemetry at-scale. IoT Hub podporuje i obousměrnou komunikaci zpátky do zařízení, což umožňuje odesílat akce z cloudu nebo Azure IoT Edge do zařízení.IoT Hub also supports bi-directional communication back to devices, allowing actions to be sent from the cloud or Azure IoT Edge to the device. Azure IoT Edge můžete použít ke spouštění aplikací na hraničních zařízeních, jako jsou modely strojového učení.Azure IoT Edge can be used to run applications at the edge, such as machine learning models.
  • Azure Databricks se streamem Apache Spark se nachází ve vrstvě pro transformaci a analýzu.Azure Databricks with Apache Spark Streaming is located in the transformation and analytics layer. Datacihly používají knihovnu Azure-eventhubs-spark_2 .11:2.3.6 Maven k připojení ke koncovému bodu kompatibilnímu s centrem událostí IoT Hub.Databricks uses the azure-eventhubs-spark_2.11:2.3.6 Maven library to connect to IoT Hub's Event Hub compatible endpoint. Apache Spark streaming je škálovatelný systém pro zpracování datových proudů odolný proti chybám, který nativně podporuje zatížení Batch i streamování.Apache Spark Streaming is a scalable fault-tolerant streaming processing system that natively supports both batch and streaming workloads.
  • Azure Cosmos DB je globálně distribuovaná databáze s více modely.Azure Cosmos DB is a globally distributed, multi-model database.
    • Úrovně konzistence – Cosmos DB podporují 5 úrovní konzistence (silná, ohraničená neaktuálnost, relace, konzistentní předpona, případně), což vám umožní dosáhnout kompromisů mezi konzistencí čtení a dostupností, latencí a propustností.Consistency Levels - Cosmos DB supports 5 consistency levels (Strong, Bounded Staleness, Session, Consistent Prefix, Eventual) allowing you to make the tradeoff between the read consistency vs. availability, latency, and throughput.
    • Hodnota TTL-Azure Cosmos DB poskytuje možnost automaticky odstraňovat položky z kontejneru po určitém časovém období.TTL - Azure Cosmos DB provides the ability to delete items automatically from a container after a certain time period. To umožňuje Cosmos DB fungovat jako aktivní úložiště dat pro poslední data s dlouhodobými daty uloženými v úložišti objektů blob Azure.This allows Cosmos DB to act as a hot data store for recent data, with long-term data stored in Azure Blob cold storage.
    • Změna kanálu – vypíše seřazený seznam dokumentů, které se změnily v pořadí, ve kterém byly změněny.Change Feed - Outputs a sorted list of documents that were changed in the order in which they were modified. Můžete vytvořit malé proaktivní Azure Functions, které se automaticky aktivují pro každou novou událost v kanálu změn kontejneru Azure Cosmos.You can create small reactive Azure Functions that will be automatically triggered on each new event in your Azure Cosmos container's change feed. V závislosti na obsahu dokumentu JSON se může služba Azure Functions připojit k rozhraní API služby Azure IoT Hub Service a provádět akci na zařízení pomocí typu "vlákna zařízení", zasílání zpráv z cloudu na zařízení nebo přímé metody.Depending on the contents of the JSON document, the Azure Function can connect to Azure IoT Hub Service API and execute an action on the device using Device Twin, Cloud to Device messaging, or Direct Methods.
    • Jednotka žádosti (RU) – je míra propustnosti v Azure Cosmos DB.Request Unit (RU) - Is the measure of throughput in Azure Cosmos DB. Ru jsou výpočetní jednotky pro výkon i náklady.RUs are compute units for both performance and cost. Pomocí ru můžete dynamicky škálovat směrem nahoru a dolů a přitom zachovat dostupnost, optimalizaci pro náklady, výkon a dostupnost ve stejnou dobu.With RUs, you can dynamically scale up and down while maintaining availability, optimizing for cost, performance and availability at the same time.
    • Dělení – klíč oddílu, který určuje, jak se budou data směrovat do různých oddílů, a to Cosmos DB a v kontextu konkrétního scénáře se musí vydávat smysl.Partitioning - The partition key is what will determine how data is routed in the various partitions by Cosmos DB and needs to make sense in the context of your specific scenario. ID zařízení IoT je všeobecně klíč oddílu "přirozených" pro aplikace IoT.The IoT Device Id is generally the “natural” partition key for IoT applications.
  • Azure SQL Database je relační databáze pro transakční a jiná data mimo IoT.Azure SQL Database is the relational database for transactional and other non-IoT data.
  • Azure synapse Analytics je platforma pro datový sklad a vytváření sestav obsahující agregovaná data z Azure SQL a Cosmos DB.Azure Synapse Analytics is the data warehouse and reporting platform, containing aggregated data from Azure SQL and Cosmos DB. Pro podnikové datové sklady a analýzy velkých objemů dat.For enterprise data warehousing and big data analytics.
  • Power BI je sada nástrojů pro obchodní analýzy, která umožňuje analyzovat data a sdílet přehledy.Power BI is a suite of business analytics tools to analyze data and share insights. Power BI se může dotazovat na sémantický model uložený v Azure Analysis Services nebo může přímo dotazovat Azure synapse.Power BI can query a semantic model stored in Azure Analysis Services, or it can query Azure Synapse directly.
  • Azure App Services můžete použít k sestavení webových a mobilních aplikací.Azure App Services can be used to build web and mobile applications. Aplikace API Azure se dá použít k vystavení dat třetím stranám na základě dat uložených ve vrstvě obsluhy.Azure API App can be used to expose data to third parties, based on the data stored in the Serving Layer.
  • Azure Functions lze použít k překladu datových částí zprávy IoT (například z binárního formátu do formátu JSON) nebo akcí triggeru při připojení k Cosmos DB změně kanálu.Azure Functions can be used to translate IoT message payloads (for example, from binary to JSON) or trigger actions when connected to Cosmos DB Change Feed. Azure Functions je výpočetní platforma bez serveru řízená událostmi.Azure Functions is an event-driven serverless compute platform. Můžete vyvíjet a ladit v místním prostředí bez dalšího nastavování, nasadit a provozovat v cloudu ve velkém měřítku a integrovat služby s využitím triggerů a vazeb.Build and debug locally without additional setup, deploy and operate at scale in the cloud, and integrate services using triggers and bindings.

AlternativyAlternatives

PožadavkyConsiderations

  • Cosmos DB má limit 20 GB (v minulosti byl 10 GB) pro jeden logický oddíl.Cosmos DB has a 20-GB limit (in the past it was 10GB) for a single logical partition. Pro většinu řešení IoT je tato velikost dostačující.For most IoT solutions, this size is sufficient. V takovém případě doporučujeme jednu z těchto akcí:If not, we recommend either:
    • Nastavení klíče oddílu na umělé pole a přiřazení složené hodnoty (například ID zařízení + aktuální měsíc a rok).Setting the partition key to an artificial field and assign a composite value (for example, Device ID + Current Month and Year). Tím se zajistí extrémně vysoká mohutnost hodnot.This will ensure an extremely high cardinality of values.
    • Úroveň staré Cosmos DB data z úložiště do studeného úložiště (například Azure Blob Storage) pomocí kombinace hodnoty TTL pro automatické vyřazení dat z Cosmos DB a změny kanálu na replikaci dat do studeného úložiště.Tier old Cosmos DB data out to cold storage (for example, Azure Blob Storage) using a combination of TTL to automatically prune data from Cosmos DB and change feed to replicate data to cold storage.

Další krokyNext steps

Přečtěte si následující články o IoT a Cosmos DB.Review the following articles on IoT and Cosmos DB.