Integrieren von Datenspeichern in IoT-Pipelines

Abgeschlossen

Nachdem Sie Cosmos DB nun erfolgreich implementiert haben, müssen Sie bestimmen, wie Sie die Lösung mit Azure IoT-Diensten integrieren. Sie planen, die Verwendung der Optionen des heißen und des kalten Pfads zu untersuchen. Dies erleichtert die Berücksichtigung von Inventarisierungs- und Gerätetelemetrieszenarien für intelligente Appliances, die Teil Ihres cloudnativen Anwendungsentwurfs sind. Sie möchten auch andere Datenspeicher identifizieren, die Sie möglicherweise in Ihrem Entwurf verwenden können.

Was sind Azure Cosmos DB-spezifische Entwurfsüberlegungen?

Beim Entwerfen der Azure Cosmos DB-Datenbank- und Containerhierarchie ist die richtige Auswahl des Partitionsschlüssels entscheidend, um optimale Leistung und Effizienz zu gewährleisten. Diese Auswahl ist in IoT-Szenarien relevant, die in der Regel große Mengen von Streamingdaten umfassen.

Bei der Auswahl des am besten geeigneten Partitionsschlüssels sollten Sie die Verwendungsmuster und den Grenzwert von 20 GB für die Größe einer einzelnen logischen Partition berücksichtigen. Im Allgemeinen empfiehlt es sich, einen Partitionsschlüssel mit Hunderten oder Tausenden von unterschiedlichen Werten zu erstellen. Dieses Verfahren führt zu einem ausgewogenen Verbrauch von Speicher- und Computeressourcen für alle Elemente, die diesen Partitionsschlüsselwerten zugeordnet sind. Gleichzeitig darf die kombinierte Größe von Elementen, die denselben Partitionsschlüsselwert verwenden, 20 GB nicht überschreiten.

Wenn Sie beispielsweise IoT-Daten erfassen, können Sie die Eigenschaft /date für das Telemetriestreaming und /deviceId für die Geräteinventarisierung verwenden, wenn diese Eigenschaften die Ziele der gängigsten Datenabfragen darstellen. Alternativ können Sie einen synthetischen Partitionsschlüssel generieren, z. B. eine Verkettung der Werte von /deviceId und /date. Ein weiterer Ansatz besteht im Anfügen einer Zufallszahl innerhalb eines festgelegten Bereichs am Ende des Partitionsschlüsselwerts. Durch diesen Ansatz wird eine ausgewogene Verteilung der Workload auf mehrere Partitionen sichergestellt. Auf diese Weise können Sie beim Laden der Elemente in die Zielsammlung parallele Schreibvorgänge über mehrere Partitionen hinweg ausführen.

Was sind Datenpipelines in IoT-Szenarien?

In IoT-Szenarien ist es üblich, mehrere gleichzeitige Datenpfade zu implementieren, entweder durch Partitionierung des eingehenden Datenstroms oder durch Weiterleitung von Datensätzen an mehrere Pipelines. Das entsprechende Architekturmuster wird als Lambdaarchitektur bezeichnet und besteht aus zwei unterschiedlichen Pipelinetypen.

Eine schnelle Verarbeitungspipeline (heiße Ebene):

  • Führt Echtzeitverarbeitung durch.
  • Analysiert Daten.
  • Zeigt Dateninhalte an.
  • Generiert kurzfristige, zeitempfindliche Informationen.
  • Löst entsprechende Aktionen aus, z. B. Warnungen.
  • Speichert die Daten in einem Archiv.

Eine langsame Verarbeitungspipeline (kalte Ebene):

  • Führt komplexere Analysen durch und kombiniert möglicherweise Daten aus mehreren Quellen und über einen längeren Zeitraum.
  • Generiert Artefakte wie Berichte oder Machine Learning-Modelle.

Welche Rolle spielen Azure-Dienste bei der Implementierung von IoT-Pipelines?

IoT-Systeme erfassen Telemetriedaten, die von einer Vielzahl von Geräten generiert werden, verarbeiten und analysieren Streamingdaten, um Erkenntnisse nahezu in Echtzeit zu gewinnen, und archivieren Daten für Batchanalysen im kalten Speicher. Der Datenpfad beginnt damit, dass Telemetriedaten, die von IoT-Geräten generiert werden, zur anfänglichen Verarbeitung an Azure IoT Hub oder Azure IoT Central gesendet werden. Sowohl Azure IoT Hub als auch Azure IoT Central speichern erfasste Daten für einen konfigurierbaren Zeitraum.

The options for integrating Azure IoT Central with cloud-native applications and Azure services.

Azure IoT Hub unterstützt Partitionierung und Nachrichtenrouting, mit denen Sie bestimmte Nachrichten für Verarbeitungs-, Warnungs- und Korrekturaufgaben durch Azure Logic Apps und Azure Functions festlegen können. Die entsprechende Funktionalität ist in Azure IoT Central verfügbar und basiert auf den benutzerdefinierten Regeln, die Aktionen über Webhooks auslösen. Die Webhooks können auf Azure Functions, Azure Logic Apps, Microsoft Flow oder Ihre eigenen benutzerdefinierten Apps verweisen. Azure IoT Hub-Routen ermöglichen es Ihnen auch, Telemetriedaten zur anfänglichen Verarbeitung an eine Azure-Funktion und dann an Azure Cosmos DB weiterzuleiten. Beispiele für eine solche Verarbeitung sind die Formatkonvertierung oder das Generieren eines synthetischen Partitionsschlüssels. Eine weitere mögliche Verwendung von Azure IoT Hub-Routen ist das Kopieren eingehender Daten in Azure Blob Storage oder Azure Data Lake. Diese Methode ist eine kostengünstige Archivierungsoption mit komfortablem Zugriff für die Batchverarbeitung, einschließlich Data Science-Aufgaben in Azure Machine Learning.

Azure IoT Central bietet fortlaufenden Datenexport in Azure Event Hubs, Azure Service Bus und benutzerdefinierte Webhooks. Es ist auch möglich, den intervallbasierten Datenexport in Azure Blob Storage zu konfigurieren. Azure Functions unterstützt Bindungen für Azure Event Hubs und Azure Service Bus, die Sie nutzen können, um diese Lösungen mit Azure Cosmos DB zu integrieren.

Mit Azure IoT Central können Sie mit den integrierten Analysefunktionen Einblicke nahezu in Echtzeit bereitstellen. Für erweiterte Analyseanforderungen oder bei Verwendung von Azure IoT Hub können Sie Daten an Azure Stream Analytics übertragen. Azure Stream Analytics unterstützt die SQL-API von Azure Cosmos DB als Ausgabe und schreibt Datenstrom-Verarbeitungsergebnisse als JSON-formatierte Elemente in Azure Cosmos DB-Container. Dies implementiert Datenarchivierung und ermöglicht Ad-hoc-Abfragen mit geringer Latenz für unstrukturierte JSON-Daten. Die Änderungsfeedfunktion erkennt automatisch neue Daten und Änderungen an vorhandenen Daten. Sie können diese Daten verarbeiten, indem Sie Azure Cosmos DB mit Azure Synapse Analytics verbinden. Nach Abschluss der Verarbeitung können Sie sie zurück in Azure Cosmos DB laden, um eine detailliertere Berichterstellung zu ermöglichen. Es ist auch möglich, Azure Databricks mit Apache Spark-Streaming für Folgendes zu verwenden:

  • Laden von Daten in Azure IoT Hub.
  • Verarbeiten der Daten, um Echtzeitanalysen zu liefern.
  • Archivieren von Daten für die Langzeitaufbewahrung und zusätzliche Berichterstellung für Azure-Dienste wie Azure Cosmos DB, Azure Blob Storage oder Azure Data Lake