IoT mit Cosmos DB

Cosmos DB
Databricks
Functions
IoT Hub
Power BI

Skalieren Sie unmittelbar und flexibel entsprechend verschiedenen und unvorhersehbaren IoT-Workloads, ohne die Leistung bei eingehendem Datenverkehr oder Abfragen zu beeinträchtigen.

Azure Cosmos DB ist eine global verteilte Datenbank von Microsoft mit mehreren Modellen. Azure Cosmos DB wurde von Grund auf für globale Verteilung und horizontale Skalierbarkeit konzipiert. Der Dienst bietet eine sofort einsatzbereite globale Verteilung über beliebig viele Azure-Regionen hinweg, indem er Ihre Daten transparent skaliert und dort repliziert, wo Ihre Benutzer sie benötigen. Sie können Durchsatz und Speicherplatz elastisch weltweit skalieren und bezahlen nur für den Durchsatz und Speicherplatz, den Sie benötigen.

Cosmos DB ist ideal für IoT-Lösungen geeignet. Cosmos DB kann Telemetriedaten für Geräte rasch erfassen und indizierte Abfragen mit geringer Wartezeit und hoher Verfügbarkeit zurückgeben.

Cosmos DB ist ein Datenbankdienst mit mehreren Modellen mit Wire Protocol-kompatiblen API-Endpunkten für Cassandra, MongoDB, SQL, Gremlin, Etcd und Table sowie integrierter Unterstützung für Jupyter Notebook-Dateien.

Aufbau

Aufbau

Datenfluss

  1. Von IoT-Geräten generierte Ereignisse werden über Azure IoT Hub als Datenstrom von Nachrichten an die Analyse- und Transformationsebene gesendet. Azure IoT Hub speichert Datenströme für einen konfigurierbaren Zeitraum in Partitionen.
  2. Azure Databricks wird in Apache Spark Streaming ausgeführt und ruft die Nachricht in Echtzeit aus IoT Hub ab, verarbeitet die Daten gemäß der Geschäftslogik und sendet sie anschließend zur Speicherung an die Bereitstellungsebene. Spark Streaming bietet Echtzeitanalysen, wie z. B. das Berechnen von gleitenden Durchschnitten und Minimal- und Maximalwerten über Zeiträume.
  3. Gerätemeldungen werden in Cosmos DB als JSON-Dokumente gespeichert. Dies wird als heißer Datenspeicher erachtet. Verschiedene JSON-Schemas, die unterschiedliche Geräteanbieter darstellen, können in Cosmos DB gespeichert oder in ein kanonisches JSON-Schema konvertiert werden.
  4. Die Speicherebene besteht aus folgenden Elementen:
    • Azure Blob Storage: Durch die IoT Hub-Nachrichtenweiterleitung können die unformatierten IoT-Gerätemeldungen in Azure Blob Storage gespeichert werden, wodurch der Blobspeicher als kostengünstiger, langfristiger kalter Datenspeicher fungieren kann.
    • Azure SQL-Datenbank: Verwenden Sie Azure SQL zum Speichern von Transaktionsdaten und relationalen Daten (z. B. Abrechnungsdaten, Benutzerrollen).
    • Azure Synapse Analytics (früher Azure SQL Data Warehouse): Für Ihr Lösungs-Data Warehouse. Aufgefüllt wurde mithilfe von Azure Data Factory mit aggregierten Daten aus Cosmos DB und Azure SQL.
  5. Mit Microsoft Power BI können Ihre Benutzer Daten im Warehouse analysieren.
  6. Auf der Grundlage der Speicherebene können außerdem Web-, mobile und andere Anwendungen erstellt werden. So können Sie beispielsweise auf der Grundlage der Speicherebenendaten APIs für die Verwendung durch Dritte verfügbar machen.
  7. Führen Sie mit dem Cosmos DB-Änderungsfeed jedes Mal eine Azure-Funktion aus, wenn in Cosmos DB eine Gerätemeldung hinzugefügt oder aktualisiert wird.
  8. Bei einigen Gerätemeldungen (z. B. bei einem Fehlercode) muss möglicherweise eine Aktion für das Gerät ausgeführt werden. Mithilfe der Azure IoT Hub-Dienst-API kann die Azure-Funktion eine Verbindung mit Azure IoT Hub herstellen und eine Aktion für das Gerät (z. B. Neustart) ausführen. Dabei wird Folgendes genutzt:
    • Gerätezwillinge
    • Cloud-zu-Gerät-Nachrichten
    • Direkte Methoden

Komponenten

Diese Architektur verwendet die folgenden Azure-Komponenten:

  • Azure IoT Hub fungiert als Cloudgateway und erfasst bedarfsorientiert Telemetriedaten für Geräte. IoT Hub unterstützt außerdem die bidirektionale Kommunikation mit Geräten, sodass Aktionen aus der Cloud oder von Azure IoT Edge an das Gerät gesendet werden können. Mit Azure IoT Edge können Geräte an der Edge ausgeführt werden, z. B. Machine Learning-Modelle.
  • Azure Databricks mit Apache Spark Streaming befindet sich auf der Transformations- und Analyseebene. Databricks verwendet die Maven-Bibliothek „azure-eventhubs-spark_2.11:2.3.6“, um eine Verbindung mit dem Event Hub-kompatiblen Endpunkt von IoT Hub herzustellen. Apache Spark Streaming ist ein skalierbares fehlertolerantes Streamingverarbeitungssystem, das native Unterstützung für Batch- und Streamingworkloads bietet.
  • Azure Cosmos DB ist eine global verteilte Datenbank mit Unterstützung mehrerer Modelle.
    • Konsistenzebenen: Cosmos DB unterstützt fünf Konsistenzebenen (stark, begrenzte Veraltung, Sitzung, Präfixkonsistenz, letztlich), wodurch Sie einen Ausgleich zwischen Lesekonsistenz und Verfügbarkeit, Latenz und Durchsatz schaffen können.
    • Gültigkeitsdauer (Time to Live, TTL): Azure Cosmos DB bietet die Möglichkeit, Elemente nach einem bestimmten Zeitraum automatisch aus einem Container zu löschen. Dadurch kann Cosmos DB als heißer Datenspeicher für aktuelle Daten fungieren, und langfristige Daten sind im kalten Azure Blob Storage gespeichert.
    • Änderungsfeed: Gibt eine sortierte Liste von geänderten Dokumenten in der Reihenfolge aus, in der sie geändert wurden. Sie können kleine reaktive Azure-Funktionen erstellen, die automatisch bei jedem neuen Ereignis im Änderungsfeed Ihres Azure Cosmos-Containers ausgelöst werden. In Abhängigkeit vom Inhalt des JSON-Dokuments kann die Azure-Funktion eine Verbindung mit der Azure IoT Hub-Dienst-API herstellen und mit dem Gerätezwilling, Cloud-zu-Gerät-Messaging oder über direkte Methoden eine Aktion auf dem Gerät ausführen.
    • Anforderungseinheit (Request Unit, RU): Dies ist in Azure Cosmos DB das Maß für den Durchsatz. RUs sind Compute-Einheiten für Leistung und Kosten. Mit RUs können Sie dynamisch zentral hoch- und herunterskalieren. Dabei bleibt die Verfügbarkeit gewährleistet, und Kosten, Leistung und Verfügbarkeit werden optimiert.
    • Partitionierung: Der Partitionsschlüssel bestimmt, wie die Daten in den verschiedenen Partitionen von Cosmos DB weitergeleitet werden; er muss im Kontext Ihres konkreten Szenarios sinnvoll sein. Die IoT-Geräte-ID ist der „natürliche“ Partitionsschlüssel für IoT-Anwendungen.
  • Azure SQL-Datenbank- ist die relationale Datenbank für Transaktionsdaten und sonstige Nicht-IoT-Daten.
  • Azure Synapse Analytics ist die Data Warehouse- und Berichterstellungsplattform, die aggregierte Daten aus Azure SQL und Cosmos DB enthält. Für Data Warehousing für Unternehmen und Big Data-Analysen.
  • Power BI ist eine Suite aus Business Analytics-Tools zum Analysieren von Daten und Teilen von Einblicken. Power BI kann ein in Azure Analysis Services gespeichertes Semantikmodell oder direkt Azure Synapse abfragen.
  • Azure App Service kann zum Erstellen von Web- und Mobilanwendungen verwendet werden. Azure API App kann verwendet werden, um Daten auf der Grundlage der auf der Bereitstellungsebene gespeicherten Daten für Dritte verfügbar zu machen.
  • Azure Functions kann verwendet werden, um IoT-Nachrichtennutzlasten (z. B. von Binärdaten in JSON-Daten) zu übersetzen oder Aktionen auszulösen, wenn eine Verbindung mit dem Cosmos DB-Änderungsfeed besteht. Azure Functions ist eine ereignisgesteuerte serverlose Computeplattform. Erstellen und debuggen Sie lokal ohne zusätzliche Einrichtung, stellen Sie Bereitstellung und Betrieb in großem Umfang sicher, und integrieren Sie Dienste mit Triggern und Bindungen.

Alternativen

Überlegungen

  • In Cosmos DB gilt ein 20-GB-Limit (früher betrug das Limit 10 GB) für eine einzelne logische Partition. Für die meisten IoT-Lösungen ist diese Größe ausreichend. Andernfalls empfehlen wir Folgendes:
    • Festlegen des Partitionsschlüssels auf ein künstliches Feld und Zuweisen eines zusammengesetzten Werts (z. B. Geräte-ID + aktueller Wert für Monat und Jahr). Dadurch wird eine außerordentlich hohe Kardinalität von Werten sichergestellt.
    • Lagern Sie alte Cosmos DB-Daten mit einer TTL-Kombination in den Cold Storage (z. B. Azure Blob Storage) aus, um Daten aus Cosmos DB und dem Änderungsfeed automatisch zu löschen und Daten mit dem Cold Storage zu replizieren.

Nächste Schritte

Sehen Sie die folgenden Artikel zu IoT und Cosmos DB ein.