Usługa Azure Cosmos DB w obciążeniach IoT

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

W tym artykule opisano obciążenie Internetu rzeczy (IoT), które opiera się na kilku funkcjach usługi bazy danych Azure Cosmos DB. Azure Cosmos DB to wielomodelowa baza danych utworzona na potrzeby globalnej dystrybucji i skali w poziomie.

Dystrybucja globalna w sposób przezroczysty skaluje i replikuje dane w różnych regionach świadczenia usługi Azure. Przepływność i magazyn można skalować na całym świecie i płacić tylko za potrzebną kwotę. Natychmiastowe elastyczne skalowanie umożliwia dostosowanie różnych i nieprzewidywalnych obciążeń IoT bez poświęcania pozyskiwania danych ani wydajności zapytań.

Usługa Azure Cosmos DB jest idealna w przypadku obciążeń IoT, ponieważ jest w stanie:

  • Pozyskiwanie danych telemetrycznych urządzenia z wysokimi szybkościami i zwracanie indeksowanych zapytań z małym opóźnieniem i wysoką dostępnością.
  • Przechowywanie formatu JSON od różnych dostawców urządzeń, co zapewnia elastyczność w schemacie ładunku.
  • Za pomocą punktów końcowych interfejsu API zgodnych z protokołem wire dla baz danych Cassandra, MongoDB, SQL, Gremlin itp. i baz danych tabel oraz wbudowanej obsługi plików notesów Jupyter Notebook.

Potencjalne przypadki użycia

  • Użyj wbudowanych, globalnie rozproszonych funkcji usługi Azure Cosmos DB, aby umożliwić odczyt i zapis o małych opóźnieniach w przypadku wysoce dynamicznych aplikacji IoT.
  • Obsługa danych od różnych dostawców urządzeń i typów danych.

Architektura

Diagram przedstawiający rolę usługi Azure Cosmos DB w architekturze rozwiązania Azure IoT.Pobierz plik programu Visio z tą architekturą.

Przepływ danych

  1. Czujniki IoT i urządzenia brzegowe wysyłają zdarzenia jako strumienie komunikatów za pośrednictwem usługi Azure IoT Hub do warstwy analizowania i przekształcania. Usługa IoT Hub może przechowywać strumienie danych w partycjach przez określony czas.

  2. Usługa Azure Databricks z przesyłaniem strumieniowym ze strukturą platformy Apache Spark pobiera komunikaty z usługi IoT Hub w czasie rzeczywistym, przetwarza dane na podstawie logiki biznesowej i wysyła dane do magazynu. Przesyłanie strumieniowe ze strukturą może zapewnić analizę w czasie rzeczywistym, taką jak obliczanie średnich ruchomych lub minimalnych i maksymalnych wartości w okresach czasu.

  3. Usługa Azure Cosmos DB przechowuje komunikaty urządzeń jako dokumenty JSON w gorącym magazynie danych. Usługa Azure Cosmos DB może weryfikować schematy JSON od różnych dostawców urządzeń.

    Warstwa magazynu składa się również z następujących elementów:

    • Azure Blob Storage. Routing komunikatów usługi IoT Hub zapisuje nieprzetworzone komunikaty urządzeń w usłudze Blob Storage, zapewniając niedrogi magazyn zimnych danych.
    • Usługa Azure SQL Database do przechowywania danych transakcyjnych i relacyjnych, takich jak dane rozliczeniowe i role użytkowników.
    • Magazyn danych usługi Azure Synapse Analytics wypełniony przez usługę Azure Data Factory, która agreguje dane z usług Azure Cosmos DB i Azure SQL DB.
  4. Usługa Microsoft Power BI analizuje magazyn danych.

  5. Warstwa prezentacji używa danych z warstwy magazynu do tworzenia aplikacji internetowych, mobilnych i api.

  6. Za każdym razem, gdy pojawi się nowy lub zaktualizowany komunikat urządzenia, źródło zmian usługi Azure Cosmos DB wyzwala funkcję usługi Azure Functions.

  7. Funkcja określa, czy komunikat wymaga akcji urządzenia, takiej jak ponowne uruchomienie. Jeśli tak, funkcja łączy się z usługą IoT Hub przy użyciu interfejsu API usługi IoT Hub i inicjuje akcję urządzenia. Funkcja może zainicjować akcję przy użyciu bliźniaczych reprezentacji urządzeń, chmury do komunikatów urządzenia lub metod bezpośrednich.

Składniki

To obciążenie używa następujących składników platformy Azure:

Azure Cosmos DB

To obciążenie IoT zwraca uwagę na usługę Azure Cosmos DB, globalnie rozproszoną, wielomodelową bazę danych. Obciążenie korzysta z następujących funkcji usługi Azure Cosmos DB:

  • Poziomy spójności. Usługa Azure Cosmos DB obsługuje pięć poziomów spójności odczytu, od najsilniejszych do najsłabszych: silna, powiązana nieaktualność, sesja, spójny prefiks i ostateczna. Ogólnie rzecz biorąc, silniejsza spójność prowadzi do obniżenia dostępności, dłuższego opóźnienia i mniejszej przepływności. Możesz wybrać poziom spójności na podstawie wymagań dotyczących obciążenia.

  • Czas wygaśnięcia (TTL). Usługa Azure Cosmos DB może automatycznie usuwać elementy z kontenera po upływie określonego czasu. Ta funkcja umożliwia usłudze Azure Cosmos DB działanie jako gorący magazyn danych dla ostatnich danych z długoterminowymi danymi przechowywanymi w zimnym magazynie obiektów blob platformy Azure.

  • Zestawienie zmian. Funkcja zestawienia zmian zwraca posortowaną listę zmienionych dokumentów w kolejności, w jakiej zostały zmodyfikowane. Każde nowe zdarzenie w kanale zmian kontenera usługi Azure Cosmos DB automatycznie wyzwala małą reaktywną funkcję usługi Azure Functions. W zależności od zawartości dokumentu JSON funkcja może nawiązać połączenie z interfejsem API usługi Azure IoT Hub i wykonać akcję na urządzeniu.

  • Jednostki żądań (RU). Jednostki RU to jednostki obliczeniowe, które mierzą przepływność usługi Azure Cosmos DB. Jednostek RU można używać do dynamicznego skalowania usługi Azure Cosmos DB w górę i w dół przy zachowaniu dostępności i optymalizacji pod kątem kosztów i wydajności.

  • Partycjonowanie. Klucz partycji określa, jak usługa Azure Cosmos DB kieruje dane w partycjach. Identyfikator urządzenia IoT to zwykły klucz partycji dla aplikacji IoT.

Inne składniki platformy Azure

Rozwiązanie korzysta również z następujących składników platformy Azure:

  • Usługa Azure IoT Edge uruchamia aplikacje na urządzeniach brzegowych, takich jak modele uczenia maszynowego.

  • Usługa Azure IoT Hub działa jako brama w chmurze, pozyskując dane telemetryczne urządzenia na dużą skalę. Usługa IoT Hub obsługuje komunikację z powrotem do urządzeń, umożliwiając wysyłanie akcji z chmury do usługi IoT Edge na urządzenie.

  • Usługa Azure Databricks z przesyłaniem strumieniowym ze strukturą platformy Spark to skalowalny, odporny na uszkodzenia system przetwarzania strumieniowego, który natywnie obsługuje obciążenia wsadowe i przesyłane strumieniowo. Usługa Azure Databricks to warstwa przekształcania i analizy oraz łączy się z punktem końcowym zgodnym z centrum zdarzeń usługi IoT Hub przy użyciu biblioteki Azure-eventhubs-spark_2.11:2.3.6 Maven.

  • Usługa Azure Blob Storage zapewnia skalowalny, niedrogi, długoterminowy magazyn danych zimnych dla danych bez struktury.

  • Usługa Azure SQL Database to relacyjna baza danych dla danych transakcyjnych i innych niż IoT.

  • Usługa Azure Synapse Analytics to platforma magazynu danych i raportowania na potrzeby magazynowania danych przedsiębiorstwa i analizy danych big data. Usługa Synapse Analytics zawiera zagregowane dane z usług Azure SQL Database i Azure Cosmos DB.

    Usługa Azure Synapse Link dla usługi Azure Cosmos DB umożliwia analizowanie danych operacyjnych usługi Azure Cosmos DB niemal w czasie rzeczywistym bez wpływu na wydajność i koszty obciążeń transakcyjnych. Usługa Synapse Link używa dwóch aparatów analitycznych w obszarze roboczym usługi Azure Synapse: SQL Serverless i Spark Pools.

  • Usługa Power BI to zestaw narzędzi do analizy biznesowej do analizowania danych i udostępniania szczegółowych informacji. Usługa Power BI może wykonywać zapytania dotyczące modelu semantycznego przechowywanego w usługach Azure Analysis Services lub wysyłać zapytania bezpośrednio do usługi Synapse Analytics.

  • usługa aplikacja systemu Azure tworzy aplikacje internetowe i mobilne. Aplikacja interfejsu API platformy Azure umożliwia aplikacjom innych firm korzystanie z interfejsów API na podstawie danych z warstwy obsługującej.

  • Azure Functions to oparta na zdarzeniach platforma obliczeniowa bezserwerowa, która może działać na dużą skalę w chmurze i integrować usługi przy użyciu wyzwalaczy i powiązań. Usługa Azure Functions może tłumaczyć formaty komunikatów IoT lub wyzwalać akcje po nawiązaniu połączenia z kanałem informacyjnym zmian usługi Azure Cosmos DB.

Alternatywy

  • Zamiast usługi Azure Databricks warstwa transformacji i analizy może używać usługi HDInsight Storm, HDInsight Spark lub Azure Stream Analytics do wykonywania analiz przesyłania strumieniowego oraz przekształcania ładunków komunikatów za pomocą usługi Azure Functions.

  • Warstwa magazynu usługi może używać usługi Azure Data Explorer do przechowywania komunikatów IoT. Ta usługa ma również zaawansowane możliwości analizy.

Kwestie wymagające rozważenia

Usługa Azure Cosmos DB ma limit 20 GB dla pojedynczej partycji logicznej. W przypadku większości rozwiązań IoT ten rozmiar jest wystarczający. Jeśli nie, możesz:

  • Ustaw klucz partycji na pole sztuczne i przypisz w polu wartość złożoną, taką jak Identyfikator urządzenia + Bieżący miesiąc i Rok. Ta strategia zapewnia kardynalność wysokiej wartości dla dobrego projektu partycji. Aby uzyskać więcej informacji, zobacz Wybieranie klucza partycji.

  • Na podstawie cyklu życia danych można przenieść starsze dane usługi Azure Cosmos DB do magazynu zimnego, takiego jak Azure Blob Storage. Możesz użyć kombinacji zestawienia zmian, aby replikować dane do magazynu zimnego, a czas wygaśnięcia automatycznie usuwa dane z kontenera po upływie określonego czasu.

Następne kroki