Auswählen einer Technologie für die Datenstromverarbeitung in Azure
In diesem Artikel werden die Technologieoptionen für die Echtzeit-Datenstromverarbeitung in Azure verglichen.
Die Echtzeit-Datenstromverarbeitung liest Nachrichten aus warteschlangen- oder dateibasiertem Speicher, verarbeitet die Nachrichten und leitet das Ergebnis an eine andere Nachrichtenwarteschlange, einen anderen Dateispeicher oder eine andere Datenbank weiter. Die Verarbeitung beinhaltet unter Umständen das Abfragen, Filtern und Aggregieren von Nachrichten. Datenstromverarbeitungs-Engines müssen in der Lage sein, unbegrenzte Datenströme zu nutzen und mit minimaler Wartezeit Ergebnisse zu erzeugen. Weitere Informationen finden Sie unter Real time processing (Verarbeitung in Echtzeit).
Welche Technologien für die Echtzeitverarbeitung stehen zur Verfügung?
In Azure erfüllen alle folgenden Datenspeicher die grundlegenden Anforderungen für die Echtzeitverarbeitung:
- Azure Stream Analytics
- HDInsight mit Spark Streaming
- Apache Spark in Azure Databricks
- Azure-Funktionen
- WebJobs in Azure App Service
- Apache Kafka Streams-API
Wichtige Auswahlkriterien
Beginnen Sie bei Szenarien für die Echtzeitverarbeitung mit der Auswahl des geeigneten Diensts für Ihre Anforderungen, indem Sie die folgenden Fragen beantworten:
Bevorzugen Sie beim Erstellen der Logik für die Datenstromverarbeitung einen deklarativen oder einen imperativen Ansatz?
Benötigen Sie integrierten Unterstützung für temporale Verarbeitung oder Windowing?
Werden Daten in anderen Formaten als Avro, JSON oder CSV empfangen? Falls ja, sollten Sie Optionen in Erwägung ziehen, die mithilfe von benutzerdefiniertem Code alle Formate unterstützen.
Müssen Sie die Verarbeitung auf über 1 GB/s skalieren? Falls ja, ziehen Sie die Optionen in Erwägung, die mit der Clustergröße skaliert werden.
Funktionsmatrix
In den folgenden Tabellen sind die Hauptunterschiede der Funktionen zusammengefasst:
Allgemeine Funktionen
Funktion | Azure Stream Analytics | HDInsight mit Spark Streaming | Apache Spark in Azure Databricks | Azure-Funktionen | WebJobs in Azure App Service |
---|---|---|---|---|---|
Programmierbarkeit | SQL, JavaScript | C#/F#, Java, Python, Scala | C#/F#, Java, Python, R, Scala | C#, F#, Java, Node.js, Python | C#, Java, Node.js, PHP, Python |
Programmierparadigma | Deklarativ | Mischung aus deklarativ und imperativ | Mischung aus deklarativ und imperativ | Imperativ | Imperativ |
Preismodell | Streamingeinheiten | Knotenkosten pro Minute | Databricks-Einheiten | Nach Funktionsausführung und Ressourcenverbrauch | Nach App Service-Plan-Stunde |
Integrationsfunktionen
Funktion | Azure Stream Analytics | HDInsight mit Spark Streaming | Apache Spark in Azure Databricks | Azure-Funktionen | WebJobs in Azure App Service |
---|---|---|---|---|---|
Eingaben | Azure Event Hubs, Azure IoT Hub, Azure Blob-Speicher / Data Lake Storage Gen2 | Event Hubs, IoT Hub, Kafka, HDFS, Speicherblobs, Azure Data Lake Store | Event Hubs, IoT Hub, Kafka, HDFS, Speicherblobs, Azure Data Lake Store | Unterstützte Bindungen | Service Bus, Speicherwarteschlangen, Speicherblobs, Event Hubs, WebHooks, Azure Cosmos DB, Dateien |
Senken | Azure Data Lake Storage Gen 1, Azure Data Explorer, Azure Database for PostgreSQL, Azure SQL-Datenbank, Azure Synapse Analytics, Blob Storage und Azure Data Lake Gen 2, Azure Event Hubs, Power BI, Azure Table Storage, Azure Service Bus-Warteschlangen, Azure Service Bus-Themen, Azure Cosmos DB, Azure Functions | HDFS, Kafka, Speicherblobs, Azure Data Lake Store, Azure Cosmos DB | HDFS, Kafka, Speicherblobs, Azure Data Lake Store, Azure Cosmos DB | Unterstützte Bindungen | Service Bus, Speicherwarteschlangen, Speicherblobs, Event Hubs, WebHooks, Azure Cosmos DB, Dateien |
Verarbeitungsfunktionen
Funktion | Azure Stream Analytics | HDInsight mit Spark Streaming | Apache Spark in Azure Databricks | Azure-Funktionen | WebJobs in Azure App Service |
---|---|---|---|---|---|
Unterstützung für integrierte temporal Verarbeitung/Windowing | Ja | Ja | Ja | Nr. | Nein |
Datenformate für die Eingabe | Avro, JSON oder CSV, UTF-8-codiert | Jedes Format mit benutzerdefiniertem Code | Jedes Format mit benutzerdefiniertem Code Jedes Format mit benutzerdefiniertem Code | Jedes Format mit benutzerdefiniertem Code | |
Skalierbarkeit | Abfragepartitionen | Durch die Clustergröße begrenzt | Durch Konfiguration der Databricks-Clusterskalierung begrenzt | Parallele Verarbeitung von bis zu 200 Funktions-App-Instanzen | Begrenzt durch die Kapazität des App Service-Plans |
Unterstützung für verspäteten Eingang und Behandlung von Ereignissen mit falscher Reihenfolge | Ja | Ja | Ja | Nr. | Nein |
Beitragende
Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:
Hauptautor:
- Zoiner Tejada | CEO und Architekt
Nächste Schritte
- App Service-Übersicht
- Erkunden von Azure Functions
- Erste Schritte mit Azure Stream Analytics
- Durchführen erweiterter Streamingdatentransformationen
- Einrichten von Clustern in HDInsight
- Verwenden von Apache Spark in Azure Databricks