Een technologie voor stroomverwerking kiezen in Azure
In dit artikel worden technologieopties voor realtime streamverwerking in Azure vergeleken.
Bij realtime streamverwerking worden berichten uit wachtrij- of bestandsopslag verbruikt, worden de berichten verwerkt en wordt het resultaat doorgestuurd naar een andere berichtenwachtrij, bestandsopslag of database. De verwerking kan bestaan uit het uitvoeren van query's, het filteren en samenvoegen van berichten. Stroomverwerkingsen engines moeten eindeloze gegevensstromen kunnen verbruiken en resultaten kunnen produceren met minimale latentie. Zie Realtime verwerking voor meer informatie.
Wat zijn uw opties bij het kiezen van een technologie voor realtime verwerking?
In Azure voldoen alle volgende gegevensopslagen aan de belangrijkste vereisten voor realtime verwerking:
- Azure Stream Analytics
- HDInsight met Spark Streaming
- Apache Spark in Azure Databricks
- HDInsight met Storm
- Azure Functions
- Azure App Service WebJobs
- Streams-API van Apache Kafka
Selectiecriteria voor sleutels
Voor scenario's voor realtime verwerking kunt u beginnen met het kiezen van de juiste service voor uw behoeften door deze vragen te beantwoorden:
Geeft u de voorkeur aan een declaratieve of imperatieve benadering voor het schrijven van stroomverwerkingslogica?
Hebt u ingebouwde ondersteuning nodig voor tijdelijke verwerking of windowing?
Zijn uw gegevens beschikbaar in indelingen naast Avro, JSON of CSV? Zo ja, overweeg dan opties die elke indeling ondersteunen met behulp van aangepaste code.
Moet u uw verwerking schalen tot meer dan 1 GB/s? Zo ja, overweeg dan de opties die worden geschaald met de clustergrootte.
Mogelijkheidsmatrix
De volgende tabellen geven een overzicht van de belangrijkste verschillen in mogelijkheden.
Algemene mogelijkheden
| Mogelijkheid | Azure Stream Analytics | HDInsight met Spark Streaming | Apache Spark in Azure Databricks | HDInsight met Storm | Azure Functions | Azure App Service WebJobs |
|---|---|---|---|---|---|---|
| Programmeerbaarheid | Querytaal voor Stream Analytics, JavaScript | C#/F#, Java, Python, Scala | C#/F#, Java, Python, R, Scala | C#, Java | C#, F#, Java, Node.js, Python | C#, Java, Node.js, PHP, Python |
| Programmeerparadigma | Declaratief ontwikkelen | Combinatie van declaratief en imperatieve | Combinatie van declaratief en imperatieve | Imperatief ontwikkelen | Imperatief ontwikkelen | Imperatief ontwikkelen |
| Prijsmodel | Streaming-eenheden | Per clusteruur | Databricks-eenheden | Per clusteruur | Uitvoering per functie en resourceverbruik | Per uur app-serviceplan |
Integratiemogelijkheden
| Mogelijkheid | Azure Stream Analytics | HDInsight met Spark Streaming | Apache Spark in Azure Databricks | HDInsight met Storm | Azure Functions | Azure App Service WebJobs |
|---|---|---|---|---|---|---|
| Invoerwaarden | Azure Event Hubs, Azure IoT Hub, Azure Blob Storage | Event Hubs, IoT Hub, Kafka, HDFS, Storage Blobs, Azure Data Lake Store | Event Hubs, IoT Hub, Kafka, HDFS, Storage Blobs, Azure Data Lake Store | Event Hubs, IoT Hub, Storage Blobs, Azure Data Lake Store | Ondersteunde bindingen | Service Bus, Storage, Storage Blobs, Event Hubs, WebHooks, Cosmos DB, Files |
| Putten | Azure Data Lake Store, Azure SQL Database, Storage Blobs, Event Hubs, Power BI, Table Storage, Service Bus Queues, Service Bus Topics, Cosmos DB, Azure Functions | HDFS, Kafka, Storage Blobs, Azure Data Lake Store, Cosmos DB | HDFS, Kafka, Storage Blobs, Azure Data Lake Store, Cosmos DB | Event Hubs, Service Bus, Kafka | Ondersteunde bindingen | Service Bus, Storage, Storage Blobs, Event Hubs, WebHooks, Cosmos DB, Files |
Verwerkingsmogelijkheden
| Mogelijkheid | Azure Stream Analytics | HDInsight met Spark Streaming | Apache Spark in Azure Databricks | HDInsight met Storm | Azure Functions | Azure App Service WebJobs |
|---|---|---|---|---|---|---|
| Ingebouwde ondersteuning voor tijdelijke/vensters | Ja | Ja | Ja | Ja | Nee | Nee |
| Invoergegevensindelingen | Avro, JSON of CSV, UTF-8 gecodeerd | Elke indeling met aangepaste code | Elke indeling met aangepaste code | Elke indeling met aangepaste code | Elke indeling met aangepaste code | Elke indeling met aangepaste code |
| Schaalbaarheid | Querypartities | Gebonden aan clustergrootte | Begrensd door databricks-clusterschaalconfiguratie | Gebonden aan clustergrootte | Maximaal 200 instanties van functie-apps die parallel worden verwerkt | Gebonden aan de capaciteit van het App Service-plan |
| Ondersteuning voor late aankomst en afhandeling van gebeurtenissen die niet in de volgorde staan | Ja | Ja | Ja | Ja | Nee | Nee |
Zie ook: