O processamento de fluxo lida com os dados continuamente à medida que estes chegam. Em vez de recolher dados em lotes e processá-los em intervalos, os processadores de fluxo analisam cada evento à medida que flui através do sistema. Uma transação com cartão de crédito é avaliada quanto a fraudes em milissegundos. A leitura de um sensor dispara um alerta quando ultrapassa um limite predefinido. Um fluxo de cliques atualiza um modelo de recomendação em tempo real. O processamento ocorre em movimento, e não em repouso.
A arquitetura difere do processamento em batch. Os dados chegam através de filas de mensagens como o Kafka ou o Kinesis. Os processadores de fluxo, como o Flink, Spark Streaming ou Kafka Streams, consomem os eventos, aplicam transformações e emitem resultados. O sistema precisa de lidar com eventos que chegam com atraso, dados fora de ordem e semântica de "exatamente uma vez". Estes são problemas complexos. Os eventos atrasados exigem marcas de água para determinar quando uma janela de tempo se completa. Os eventos fora de ordem requerem armazenamento em buffer e reordenação. O processamento "exatamente uma vez" requer coordenação entre a origem, o processador e o destino. Acertar nestes pontos é complexo. Quando existem erros, os resultados são inconsistentes ou duplicados. O processamento de fluxos é poderoso para casos de utilização que necessitam de insights imediatos. É um exagero para os relatórios noturnos. A escolha entre o processamento em batch e em fluxo depende da latência exigida. Se os minutos ou as horas forem aceitáveis, o processamento em lote é mais simples e mais barato. Se os segundos forem importantes, o processamento em fluxo é a única opção.
Características do processamento de fluxo
- Contínuo — processa os eventos à medida que estes chegam.
- Baixa latência — milissegundos a segundos
- Com estado — mantém o estado entre eventos
- Complexo — lida com dados atrasados e fora de ordem.
- Escalável — distribui-se por vários nós.
O processamento de fluxo é o processamento em lote invertido. Em vez de esperar que os dados se acumulem, atua sobre cada evento à medida que este ocorre.
Comments
No comments yet. Be the first to share a thought.
Leave a comment