Escolher uma tecnologia de processamento de fluxo no Azure
Este artigo compara as opções de tecnologia para processamento de fluxo em tempo real no Azure.
O processamento de fluxo em tempo real consome mensagens de fila ou armazenamento baseado em arquivo, processa as mensagens e encaminha o resultado para outra fila de mensagens, armazenamento de arquivos ou banco de dados. O processamento pode incluir consulta, filtragem e agregação de mensagens. Os mecanismos de processamento de fluxo devem ser capazes de consumir fluxos infinitos de dados e produzir resultados com latência mínima. Para obter mais informações, consulte Processamento em tempo real.
Quais são as suas opções ao escolher uma tecnologia para processamento em tempo real?
No Azure, todos os seguintes armazenamentos de dados atenderão aos principais requisitos de suporte ao processamento em tempo real:
- Azure Stream Analytics
- HDInsight com Spark Streaming
- Apache Spark no Azure Databricks
- Funções do Azure
- WebJobs do Serviço de Aplicações do Azure
- Apache Kafka transmite API
Principais critérios de seleção
Para cenários de processamento em tempo real, comece a escolher o serviço adequado às 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 processamento temporal ou janelas?
Seus dados chegam em formatos além de Avro, JSON ou CSV? Se sim, considere opções que suportam qualquer formato usando código personalizado.
Você precisa escalar seu processamento além de 1 GBps? Em caso afirmativo, considere as opções que são dimensionadas de acordo com o tamanho do cluster.
Matriz de capacidades
As tabelas a seguir resumem as principais diferenças nos recursos.
Capacidades gerais
Funcionalidade | Azure Stream Analytics | HDInsight com Spark Streaming | Apache Spark no Azure Databricks | Funções do Azure | WebJobs do Serviço de Aplicações do Azure |
---|---|---|---|---|---|
Programabilidade | 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 programação | Declarativo | Mistura de declarativo e imperativo | Mistura de declarativo e imperativo | Imperativo | Imperativo |
Modelo de preços | Unidades de streaming | Custo do nó por minuto | Unidades Databricks | Execução por função e consumo de recursos | Por hora do plano do Serviço de Aplicativo |
Capacidades de integração
Funcionalidade | Azure Stream Analytics | HDInsight com Spark Streaming | Apache Spark no Azure Databricks | Funções do Azure | WebJobs do Serviço de Aplicações do Azure |
---|---|---|---|---|---|
Entradas | Hubs de Eventos do Azure, Hub IoT do Azure, armazenamento de Blob do Azure/Data Lake Storage 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 | Ligações suportadas | Barramento de Serviço, Filas de Armazenamento, Blobs de Armazenamento, Hubs de Eventos, WebHooks, Azure Cosmos DB, Arquivos |
Pias | Azure Data Lake Storage Gen 1, Azure Data Explorer, Banco de Dados do Azure para PostgreSQL, Banco de Dados SQL do Azure, Azure Synapse Analytics, Armazenamento de Blob e Azure Data Lake Gen 2, Hubs de Eventos do Azure, Power BI, Armazenamento de Tabela do Azure, filas do Barramento de Serviço do Azure, tópicos do 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 | Ligações suportadas | Barramento de Serviço, Filas de Armazenamento, Blobs de Armazenamento, Hubs de Eventos, WebHooks, Azure Cosmos DB, Arquivos |
Capacidades de processamento
Funcionalidade | Azure Stream Analytics | HDInsight com Spark Streaming | Apache Spark no Azure Databricks | Funções do Azure | WebJobs do Serviço de Aplicações do Azure |
---|---|---|---|---|---|
Suporte temporal/windowing integrado | Sim | Sim | Sim | No | Não |
Formatos de dados de entrada | Avro, JSON ou CSV, UTF-8 codificado | Qualquer formato usando código personalizado | Qualquer formato usando código personalizado Qualquer formato usando código personalizado | Qualquer formato usando código personalizado | |
Escalabilidade | Partições de consulta | Delimitado pelo tamanho do cluster | Limitado pela configuração de escala de cluster do Databricks | Até 200 instâncias de aplicativos funcionais processando em paralelo | Delimitado pela capacidade do plano do Serviço de Aplicativo |
Suporte de manuseio de eventos de chegada tardia e fora de ordem | Sim | Sim | Sim | No | Não |
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Autor principal:
- Zoiner Tejada - Brasil | CEO e Arquiteto
Próximos passos
- Descrição geral do Serviço de Aplicações
- Explore Azure Functions
- Introdução ao Azure Stream Analytics
- Execute transformações avançadas de dados de streaming
- Configurar clusters no HDInsight
- Usar o Apache Spark no Azure Databricks