Escolher uma tecnologia de processamento de fluxo no Azure
Este artigo compara as opções de tecnologia de processamento de fluxo em tempo real no Azure.
O processamento de fluxo em tempo real consome mensagens do armazenamento baseado em fila ou em arquivo, processa as mensagens e encaminha o resultado para outra fila de mensagens, repositório de arquivos ou banco de dados. O processamento pode incluir consulta, filtragem e agregação de mensagens. Os mecanismos de processamento de fluxo precisam ser capazes consumir intermináveis fluxos de dados e produzir resultados com latência mínima. Para obter mais informações, consulte Processamento em tempo real.
Quais são as opções disponíveis ao escolher uma tecnologia de processamento em tempo real?
No Azure, todos os seguintes armazenamentos de dados atenderão aos requisitos básicos que dão suporte ao processamento em tempo real:
- Azure Stream Analytics
- HDInsight com Spark Streaming
- Apache Spark no Azure Databricks
- HDInsight com Storm
- Azure Functions
- WebJobs no Serviço de Aplicativo do Azure
- API de streams do Apache Kafka
Principais Critérios de Seleção
Para cenários de processamento em tempo real, comece escolhendo o serviço apropriado para suas necessidades respondendo a estas perguntas:
Você prefere uma abordagem declarativa ou imperativa para a criação da lógica de processamento de fluxo?
Você precisa de suporte interno para as janelas ou o processamento temporal?
Os dados são recebidos em formatos além do Avro, JSON ou CSV? Em caso afirmativo, considere opções que dão suporte a qualquer formato que usa código personalizado.
Você precisa dimensionar o processamento além de 1 GB/s? Nesse caso, considere as opções que podem ser dimensionadas com o tamanho do cluster.
Matriz de funcionalidades
As tabelas a seguir resumem as principais diferenças em funcionalidades.
Funcionalidades gerais
Funcionalidade | Stream Analytics do Azure | HDInsight com Spark Streaming | Apache Spark no Azure Databricks | HDInsight com Storm | Azure Functions | WebJobs do Serviço de Aplicativo do Azure |
---|---|---|---|---|---|---|
Programação | SQL, 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 |
Paradigma de programação | Declarativo | Combinação de declarativo e imperativo | Combinação de declarativo e imperativo | Obrigatório | Obrigatório | Obrigatório |
Modelo de preços | Unidades de transmissão | Por hora de cluster | Unidades do Databricks | Por hora de cluster | Por execução de função e consumo de recursos | Por hora do plano de serviço de aplicativo |
Funcionalidades de integração
Funcionalidade | Stream Analytics do Azure | HDInsight com Spark Streaming | Apache Spark no Azure Databricks | HDInsight com Storm | Azure Functions | WebJobs do Serviço de Aplicativo do Azure |
---|---|---|---|---|---|---|
Entradas | Hubs de Eventos do Azure, Hub IoT do Azure, Armazenamento de Blobs do Azure/ADLS Gen2 | Hubs de Eventos, Hub IoT, Kafka, HDFS, Blobs de Armazenamento, Azure Data Lake Store | Hubs de Eventos, Hub IoT, Kafka, HDFS, Blobs de Armazenamento, Azure Data Lake Store | Hubs de Eventos, Hub IoT, Blobs de Armazenamento, Azure Data Lake Store | Associações com suporte | Barramento de Serviço, Filas de Armazenamento, Blobs de Armazenamento, Hubs de Eventos, WebHooks, Azure Cosmos DB, Arquivos |
Coletores | Azure Data Lake Storage Gen 1, Azure Data Explorer, Banco de Dados do Azure para PostgreSQL, Banco de Dados SQL do Azure, Análise de Azure Synapse, Armazenamento de Blobs e Azure Data Lake Gen 2, Hubs de Eventos do Azure, Power BI, Armazenamento de Tabelas do Azure, filas Barramento de Serviço do Azure, tópicos Barramento de Serviço do Azure, Azure Cosmos DB Azure Functions | HDFS, Kafka, Blobs de Armazenamento, Azure Data Lake Store, Azure Cosmos DB | HDFS, Kafka, Blobs de Armazenamento, Azure Data Lake Store, Azure Cosmos DB | Hubs de Eventos, Barramento de Serviço, Kafka | Associações com suporte | Barramento de Serviço, Filas de Armazenamento, Blobs de Armazenamento, Hubs de Eventos, WebHooks, Azure Cosmos DB, Arquivos |
Funcionalidades de processamento
Funcionalidade | Stream Analytics do Azure | HDInsight com Spark Streaming | Apache Spark no Azure Databricks | HDInsight com Storm | Azure Functions | WebJobs do Serviço de Aplicativo do Azure |
---|---|---|---|---|---|---|
Suporte a janelas internas/temporal | Sim | Sim | Sim | Sim | Não | Não |
Formatos de dados de entrada | Avro, JSON ou CSV, codificados em UTF-8 | Qualquer formato que usa um código personalizado | Qualquer formato que usa um código personalizado | Qualquer formato que usa um código personalizado | Qualquer formato que usa um código personalizado | Qualquer formato que usa um código personalizado |
Escalabilidade | Partições de consulta | Limitado pelo tamanho do cluster | Limitado pela configuração de escala de cluster do Databricks | Limitado pelo tamanho do cluster | Até 200 instâncias de aplicativo de funções processadas em paralelo | Limitado pela capacidade do plano de serviço de aplicativo |
Suporte à chegada tardia e manipulação de eventos fora de ordem | Sim | Sim | Sim | Sim | Não | Não |
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi escrito originalmente pelos colaboradores a seguir.
Autor principal:
- Zoiner Tejada | CEO e arquiteto
Próximas etapas
- Visão geral do Serviço de Aplicativo
- Explorar o Azure Functions
- Introdução ao Azure Stream Analytics
- Executar transformações avançadas de dados de streaming
- Configurar clusters no HDInsight
- Usar Apache Spark no Azure Databricks