Selección de una tecnología de procesamiento de flujos en Azure
Este artículo compara las opciones de tecnología para procesamiento de flujos en tiempo real en Azure.
El procesamiento de flujos en tiempo real usa mensajes de una cola o almacenamiento basado en archivos, procesa los mensajes y reenvía el resultado a otra cola de mensajes, almacén de archivos o base de datos. El procesamiento puede incluir la consulta, el filtrado y la agregación de mensajes. Los motores de procesamiento de flujos deben poder utilizar un flujo ilimitado de datos y generar resultados con una latencia mínima. Para más información, consulte Procesamiento en tiempo real.
¿De qué opciones dispone a la hora de elegir una tecnología de procesamiento en tiempo real?
En Azure, los almacenes de datos siguientes cumplirán los requisitos principales para el procesamiento en tiempo real:
- Azure Stream Analytics
- HDInsight con Spark Streaming
- Apache Spark en Azure Databricks
- Funciones de Azure
- Azure App Service
- Streams API de Apache Kafka
Principales criterios de selección
En escenarios de procesamiento en tiempo real, seleccione primero el servicio adecuado para sus necesidades respondiendo a estas preguntas:
¿Prefiere un enfoque declarativo o imperativo para crear una lógica de procesamiento de flujos?
¿Necesita compatibilidad integrada para procesamiento temporal o basado en ventanas?
¿Recibe datos en formatos distintos a Avro, JSON o CSV? Si es así, tenga en cuenta opciones que admitan cualquier formato que use código personalizado.
¿Necesita escalar el procesamiento más allá de 1 GBps? En caso afirmativo, considere la posibilidad de usar opciones que se escalan con el tamaño del clúster.
Matriz de funcionalidades
En las tablas siguientes se resumen las diferencias clave en cuanto a funcionalidades.
Funcionalidades generales
Capacidad | Azure Stream Analytics | HDInsight con Spark Streaming | Apache Spark en Azure Databricks | Azure Functions | Azure App Service WebJobs |
---|---|---|---|---|---|
Programación | 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 |
Paradigma de programación | Declarativa | Mezcla de declarativa e imperativa | Mezcla de declarativa e imperativa | Imperativo | Imperativo |
Modelo de precios | Unidades de streaming | Coste de nodo por minuto | Unidades de Databricks | Por ejecución de funciones y consumo de recursos | Por hora de plan de App Service |
Funcionalidades de integración
Capacidad | Azure Stream Analytics | HDInsight con Spark Streaming | Apache Spark en Azure Databricks | Azure Functions | Azure App Service WebJobs |
---|---|---|---|---|---|
Entradas | Azure Event Hubs, Azure IoT Hub, Azure Blob storage/Data Lake Storage Gen2 | Event Hubs, IoT Hub, Kafka, HDFS, blobs de Storage, Azure Data Lake Store | Event Hubs, IoT Hub, Kafka, HDFS, blobs de Storage, Azure Data Lake Store | Enlaces admitidos | Service Bus, colas de almacenamiento, blobs de almacenamiento, Event Hubs, WebHooks, Azure Cosmos DB, Files |
Receptores | Azure Data Lake Storage Gen 1, Azure Data Explorer, Azure Database for PostgreSQL, Azure SQL Database, Azure Synapse Analytics, Blob Storage y Azure Data Lake Gen 2, Azure Event Hubs, Power BI, Azure Table Storage, colas de Azure Service Bus, temas de Azure Service Bus, Azure Cosmos DB, Azure Functions | HDFS, Kafka, blobs de almacenamiento, Azure Data Lake Store, Azure Cosmos DB | HDFS, Kafka, blobs de almacenamiento, Azure Data Lake Store, Azure Cosmos DB | Enlaces admitidos | Service Bus, colas de almacenamiento, blobs de almacenamiento, Event Hubs, WebHooks, Azure Cosmos DB, Files |
Funcionalidades de procesamiento
Capacidad | Azure Stream Analytics | HDInsight con Spark Streaming | Apache Spark en Azure Databricks | Azure Functions | Azure App Service WebJobs |
---|---|---|---|---|---|
Compatibilidad integrada con almacenamiento temporal o basado en ventanas | Sí | Sí | Sí | No | No |
Formatos de datos de entrada | Avro, JSON o CSV, con codificación UTF-8 | Cualquier formato que use código personalizado | Cualquier formato que use código personalizado Cualquier formato que use código personalizado | Cualquier formato que use código personalizado | |
Escalabilidad | Particiones de consulta | Limitada por el tamaño del clúster | Limitado por la configuración de escalado del clúster de Databricks | Hasta 200 instancias de aplicación de función procesándose en paralelo | Limitada por la capacidad del plan de App Service |
Compatibilidad con control de eventos desordenados y llegada tardía | Sí | Sí | Sí | No | No |
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.
Autor principal:
- Zoiner Tejada | Director ejecutivo y arquitecto
Pasos siguientes
- Información general de App Service
- Exploración de Azure Functions
- Introducción al uso de Azure Stream Analytics
- Realización de transformaciones avanzadas de datos de streaming
- Configuración de clústeres en HDInsight
- Uso de Apache Spark en Azure Databricks