Obciążenia IoT używające usługi Cosmos DB

Cosmos DB
Databricks
Funkcje
Usługa IoT Hub
Power BI

Szybko i elastycznie skaluj w celu obsłużenia różnorodnych i nieprzewidywalnych obciążeń IoT bez pogarszania wydajności pozyskiwania danych ani wykonywania zapytań.Scale instantly and elastically to accommodate diverse and unpredictable IoT workloads without sacrificing ingestion or query performance.

Azure Cosmos DB to globalnie dystrybuowana, wielomodelowa baza danych firmy Microsoft.Azure Cosmos DB is Microsoft’s globally distributed, multi-model database. Azure Cosmos DB został zbudowany od podstaw przy użyciu dystrybucji globalnej i skalowania w poziomie.Azure Cosmos DB was built from the ground up with global distribution and horizontal scale at its core. Oferuje ona globalną dystrybucję gotowe w dowolnej liczbie regionów świadczenia usługi Azure przez przezroczyste skalowanie i replikowanie danych wszędzie tam, gdzie znajdują się użytkownicy.It offers turnkey global distribution across any number of Azure regions by transparently scaling and replicating your data wherever your users are. Możesz elastycznie skalować przepływność i magazyn na całym świecie i płacisz tylko za potrzebne przepływność i magazyn.You can elastically scale throughput and storage worldwide, and pay only for the throughput and storage you need.

Cosmos DB doskonale nadaje się do rozwiązań IoT.Cosmos DB is ideally suited for IoT solutions. Cosmos DB może pozyskać dane telemetryczne urządzenia przy użyciu wysokich stawek i może obsługiwać indeksowane zapytania z niską opóźnieniami i wysoką dostępnością.Cosmos DB can ingest device telemetry data at high rates and can serve indexed queries back with low latency and high availability.

Cosmos DB to wielomodelowa baza danych z punktami końcowymi interfejsów API zgodnymi z protokołem transportowym dla Cassandra, MongoDB, SQL, Gremlin, Etcd i tabel oraz wbudowana obsługa Jupyter Notebook plików.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

Przepływ danychData Flow

  1. Zdarzenia generowane przez urządzenia IoT są wysyłane do warstwy analizy i transformacji za pośrednictwem platformy Azure IoT Hub jako strumień komunikatów.Events generated from IoT devices are sent to the analyze and transform layer through Azure IoT Hub as a stream of messages. Usługa Azure IoT Hub przechowuje strumienie danych w partycjach przez konfigurowalny czas.Azure IoT Hub stores streams of data in partitions for a configurable amount of time.
  2. Azure Databricks Uruchamianie Apache Spark streaming, pobieranie komunikatów w czasie rzeczywistym z IoT Hub, przetwarzanie danych na podstawie logiki biznesowej i wysyłanie danych do obsługi warstwy magazynu.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. Funkcja przesyłania strumieniowego Spark może zapewnić analizę w czasie rzeczywistym, np. Obliczanie średniej ruchomej, wartości minimalnej i maksymalnej w okresach.Spark Streaming can provide real time analytics such as calculating moving averages, min and max values over time periods.
  3. Komunikaty urządzenia są przechowywane w Cosmos DB jako dokumenty JSON.Device messages are stored in Cosmos DB as JSON documents. Jest to uznawany za gorącą magazyn danych.This is considered the hot data store. Różne schematy JSON reprezentujące różnych dostawców urządzeń mogą być przechowywane w Cosmos DB lub konwertowane na kanoniczny schemat JSON.Different JSON schemas representing different device vendors can be stored in Cosmos DB or converted to a canonical JSON schema.
  4. Warstwa magazynowania składa się z:The storage layer consists of:
    • Blob Storage platformy Azure — usługa IoT Hub Routing komunikatów umożliwia zapisywanie nieprzetworzonych komunikatów urządzenia IoT w usłudze Azure Blob Storage, co pozwala usłudze BLOB Storage na działanie jako niedrogi, długoterminowy chłodny magazyn danych.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 — korzystanie z usługi Azure SQL do przechowywania danych transakcyjnych i relacyjnych (na przykład danych dotyczących rozliczeń, ról użytkowników).Azure SQL Database - Utilize Azure SQL for storing your transactional and relational data (for example, billing data, user roles).
    • Usługa Azure Synapse Analytics (wcześniej Azure SQL Data Warehouse) — dla magazynu danych rozwiązania.Azure Synapse Analytics (Previously Azure SQL Data Warehouse) - For your solution data warehouse. Wypełnianie przy użyciu Azure Data Factory przy użyciu zagregowanych danych z Cosmos DB i Azure SQL.Populated it using Azure Data Factory using aggregated data from Cosmos DB and Azure SQL.
  5. Program Microsoft Power BI może być używany przez użytkowników do analizowania danych w magazynie.Microsoft Power BI can be used by your users to analyze warehoused data.
  6. Aplikacje internetowe, mobilne i inne mogą być kompilowane na warstwie magazynu.Web, mobile and other applications can be built on the storage layer. Na przykład można uwidocznić interfejsy API na podstawie danych warstwy magazynu dla użycia innych firm.For example, you can expose APIs based on the storage layer data for third-party uses.
  7. Użyj Cosmos DB źródła zmian, aby wykonać funkcję platformy Azure za każdym razem, gdy komunikat urządzenia zostanie dodany lub zaktualizowany w programie 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. Niektóre komunikaty urządzenia (na przykład kod błędu) mogą wymagać wykonania akcji na urządzeniu.Some device messages (for example, a fault code) may require an action to be performed on the device. Korzystając z interfejsu API usługi Azure IoT Hub, funkcja platformy Azure może nawiązać połączenie z usługą Azure IoT Hub i wykonać akcję na urządzeniu (na przykład uruchomić ponownie) przy użyciu jednej z następujących opcji: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:
    • Bliźniacze reprezentacje urządzeńDevice Twins
    • Komunikaty z chmury do urządzeniaCloud to Device messages
    • Metody bezpośrednieDirect Methods

SkładnikiComponents

W tej architekturze są stosowane następujące składniki platformy Azure:This architecture uses the following Azure components:

  • Usługa Azure IoT Hub pełni rolę bramy w chmurze, która umożliwia pozyskiwanie danych telemetrycznych urządzeń na dużą skalę.Azure IoT Hub acts as the cloud gateway, ingesting device telemetry at-scale. IoT Hub również obsługuje komunikację dwukierunkową z urządzeniami, co pozwala na wysyłanie akcji z chmury lub Azure IoT Edge do urządzenia.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 można używać do uruchamiania aplikacji na brzegu, takich jak modele uczenia maszynowego.Azure IoT Edge can be used to run applications at the edge, such as machine learning models.
  • Azure Databricks z Apache Spark Streaming znajduje się w warstwie transformacji i analizy.Azure Databricks with Apache Spark Streaming is located in the transformation and analytics layer. W przypadku usługi dataspark_2 eventhubss do łączenia się z punktem końcowym zgodnym z centrum zdarzeń IoT Hub jest wykorzystywana Biblioteka 11:2.3.6.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 to skalowalny system przetwarzania strumieniowego odporny na uszkodzenia, który natywnie obsługuje obciążenia wsadowe i przesyłania strumieniowego.Apache Spark Streaming is a scalable fault-tolerant streaming processing system that natively supports both batch and streaming workloads.
  • Azure Cosmos DB to globalnie dystrybuowana, wielomodelowa baza danych.Azure Cosmos DB is a globally distributed, multi-model database.
    • Poziomy spójności — Cosmos DB obsługuje 5 poziomów spójności (silne, ograniczone nieaktualność, sesja, spójny prefiks, ostateczne), co pozwala zwiększyć kompromis między spójnością odczytu a dostępnością, opóźnieniem i przepływności.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.
    • Czas wygaśnięcia — Azure Cosmos DB umożliwia automatyczne usuwanie elementów z kontenera po upływie określonego czasu.TTL - Azure Cosmos DB provides the ability to delete items automatically from a container after a certain time period. Pozwala to Cosmos DB działać jako gorąca składowa danych dla ostatnich danych z długoterminowymi danymi przechowywanymi w chłodnym magazynie obiektów blob platformy 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.
    • Źródło zmian — wyprowadza posortowaną listę dokumentów, które zostały zmienione w kolejności, w której zostały zmodyfikowane.Change Feed - Outputs a sorted list of documents that were changed in the order in which they were modified. Można utworzyć małe Azure Functions reaktywne, które będą automatycznie wyzwalane dla każdego nowego zdarzenia w źródle zmian kontenera usługi 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. W zależności od zawartości dokumentu JSON funkcja platformy Azure może połączyć się z interfejsem API usługi Azure IoT Hub i wykonać akcję na urządzeniu przy użyciu opcji sznury urządzenia, do obsługi komunikatów z chmury do urządzeń lub metod bezpośrednich.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.
    • Jednostka żądania (RU) — to miara przepływności w Azure Cosmos DB.Request Unit (RU) - Is the measure of throughput in Azure Cosmos DB. Jednostek ru są jednostkami obliczeniowymi dla wydajności i kosztów.RUs are compute units for both performance and cost. Dzięki programowi jednostek ru można dynamicznie skalować w górę i w dół przy zachowaniu dostępności, optymalizując pod kątem kosztów, wydajności i dostępności w tym samym czasie.With RUs, you can dynamically scale up and down while maintaining availability, optimizing for cost, performance and availability at the same time.
    • Partycjonowanie — klucz partycji określa sposób, w jaki dane są kierowane do różnych partycji przez Cosmos DB i muszą mieć sens w kontekście określonego scenariusza.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. Identyfikator urządzenia IoT jest zwykle "naturalnym" kluczem partycji dla aplikacji IoT.The IoT Device Id is generally the “natural” partition key for IoT applications.
  • Azure SQL Database to relacyjna baza danych dla transakcyjnych i innych danych niezwiązanych z IoT.Azure SQL Database is the relational database for transactional and other non-IoT data.
  • Azure Synapse Analytics to platforma hurtowni danych i raportowania, która zawiera zagregowane dane z usług Azure SQL i Cosmos DB.Azure Synapse Analytics is the data warehouse and reporting platform, containing aggregated data from Azure SQL and Cosmos DB. Do obsługi magazynów danych w przedsiębiorstwie i analizy danych Big Data.For enterprise data warehousing and big data analytics.
  • Power BI to zestaw narzędzi do analizy biznesowej, który umożliwia analizowanie danych i udostępnianie szczegółowych informacji.Power BI is a suite of business analytics tools to analyze data and share insights. Power BI może badać model semantyczny przechowywany w Azure Analysis Services lub bezpośrednio wykonywać zapytania dotyczące usługi Azure Synapse.Power BI can query a semantic model stored in Azure Analysis Services, or it can query Azure Synapse directly.
  • Usługa Azure App Services może służyć do tworzenia aplikacji internetowych i mobilnych.Azure App Services can be used to build web and mobile applications. Aplikacja interfejsu API platformy Azure umożliwia udostępnianie danych innym firmom na podstawie danych przechowywanych w warstwie obsługującej.Azure API App can be used to expose data to third parties, based on the data stored in the Serving Layer.
  • Azure Functions może służyć do tłumaczenia ładunków komunikatów IoT (na przykład z danych binarnych na notację JSON) lub akcji wyzwalania po połączeniu ze źródłem zmian Cosmos DB.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 to oparta na zdarzeniach platforma obliczeniowa bezserwerowa.Azure Functions is an event-driven serverless compute platform. Kompiluj i debuguj lokalnie bez dodatkowej konfiguracji, wdrażaj i obsługuj na dużą skalę w chmurze i integruj usługi przy użyciu wyzwalaczy i powiązań.Build and debug locally without additional setup, deploy and operate at scale in the cloud, and integrate services using triggers and bindings.

AlternatywyAlternatives

Zagadnienia do rozważeniaConsiderations

  • Cosmos DB ma limit 20 GB (w przeszłości, w jakim była to 10gb) dla jednej partycji logicznej.Cosmos DB has a 20-GB limit (in the past it was 10GB) for a single logical partition. W przypadku większości rozwiązań IoT ten rozmiar jest wystarczający.For most IoT solutions, this size is sufficient. W przeciwnym razie zalecamy:If not, we recommend either:
    • Ustawienie klucza partycji na sztuczne pole i przypisanie wartości złożonej (na przykład identyfikator urządzenia + bieżący miesiąc i rok).Setting the partition key to an artificial field and assign a composite value (for example, Device ID + Current Month and Year). Zapewni to bardzo wysoką Kardynalność wartości.This will ensure an extremely high cardinality of values.
    • Warstwa stara Cosmos DB danych do magazynu zimnego (na przykład Azure Blob Storage) przy użyciu kombinacji czasu wygaśnięcia do automatycznego oczyszczania danych z Cosmos DB i źródła zmian w celu replikowania danych do magazynu chłodnego.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.

Następne krokiNext steps

Zapoznaj się z następującymi artykułami dotyczącymi IoT i Cosmos DB.Review the following articles on IoT and Cosmos DB.