O que são Streams de Dados?
Um stream de dados é um fluxo contínuo e potencialmente infinito de registros de dados que são gerados e processados em tempo real.
Diferentemente dos dados tradicionais em lote (batch), os streams representam informações que fluem constantemente, como um rio que nunca para de correr.
Imagine dados como gotas de chuva caindo continuamente — cada gota representa um evento ou registro, e o conjunto forma um fluxo constante de informações que precisa ser capturado e processado no momento em que acontece.
Características Fundamentais dos Streams
1. Continuidade Temporal
Os dados chegam de forma contínua, sem intervalos predefinidos. Em teoria um stream pode ser infinito, mas na prática aplicam-se janelas de tempo (time windows) para agrupar e processar eventos em blocos lógicos.
2. Ordem Temporal
Os eventos possuem uma sequência associada ao tempo (timestamp). Porém, em sistemas distribuídos é comum chegarem fora de ordem; por isso usam-se watermarks, tolerância a eventos atrasados e configuração de atraso máximo (max out-of-orderness), sobretudo quando se processa por event-time (tempo do evento) em vez de processing-time (tempo de processamento).
3. Imutabilidade Lógica
Um evento, uma vez publicado, não deve ser alterado. Correções ou mudanças são feitas através da publicação de novos eventos que complementam ou invalidam os anteriores, preservando assim a integridade histórica.
4. Volume Variável
A taxa de chegada dos dados pode variar drasticamente — desde alguns eventos por minuto até milhões por segundo — exigindo sistemas capazes de escalar dinamicamente.
5. Baixa Latência
O objetivo é processar os dados com mínima demora (geralmente em milissegundos ou segundos), garantindo que as informações sejam relevantes no momento em que ocorrem; em muitos cenários busca-se near-real-time (ordem de segundos), e não tempo real estrito. O nível de latência aceitável depende do caso de uso.
Tipos de Streams de Dados
Event Streams (Streams de Eventos)
Representam ações ou mudanças de estado que acontecem no sistema.
Exemplos:
- Cliques em um website
- Transações bancárias
- Login/logout de usuários
- Mudanças de status de pedidos
Sensor Streams (Streams de Sensores)
Dados coletados continuamente de dispositivos físicos ou virtuais.
Exemplos:
- Temperatura de servidores
- Localização GPS de veículos
- Batimentos cardíacos de wearables
- Consumo de energia de equipamentos
Log Streams (Streams de Logs)
Registros de atividades de sistemas e aplicações.
Exemplos:
- Logs de aplicações web
- Registros de acesso a APIs
- Eventos de segurança
- Métricas de performance
Apache Kafka e Streams de Dados
O Apache Kafka é uma das principais plataformas para trabalhar com streams de dados, oferecendo uma infraestrutura robusta para capturar, armazenar e processar fluxos de informações em tempo real.
Como o Kafka Gerencia Streams
1. Tópicos como Streams
No Kafka, cada tópico representa um stream de dados específico:
Tópico "user-clicks" = Stream de cliques dos usuários
Tópico "transactions" = Stream de transações financeiras
Tópico "sensor-data" = Stream de dados de sensores IoT
2. Particionamento para Paralelismo
O Kafka divide cada stream (tópico) em partições, permitindo escalabilidade e paralelismo no consumo. Dentro de cada partição a ordem é garantida, mas entre partições não há ordenação global:
Stream "pedidos-ecommerce"
├── Partição 0: Pedidos região Norte
├── Partição 1: Pedidos região Sul
├── Partição 2: Pedidos região Sudeste
└── Partição 3: Pedidos região Centro-Oeste
Em um consumer group, cada partição é atribuída a no máximo um consumidor simultaneamente, possibilitando paralelismo e balanceamento de carga. Ao aumentar o número de consumidores no grupo (até o número de partições), o processamento é distribuído automaticamente.
Além disso, a escolha da chave de partição determina a distribuição dos eventos entre as partições, afetando o balanceamento de carga e a preservação de ordem por entidade (por exemplo, por user_id
ou order_id
). Escolhas inadequadas podem criar hot partitions e reduzir o throughput.
3. Retenção Configurável
Os streams podem ser mantidos por tempo determinado (horas, dias, semanas) ou por tamanho, permitindo reprocessamento quando necessário e atendendo requisitos regulatórios.
Os streams de dados representam uma mudança fundamental na forma como processamos informações, movendo-nos de análises retrospectivas para insights e ações em tempo real.
O Apache Kafka, com seu ecossistema robusto, é uma das principais ferramentas para construir pipelines de streaming confiáveis, escaláveis e tolerantes a falhas — mas não a única. Tecnologias como Apache Flink, Spark Streaming e Redpanda também desempenham papéis importantes nesse ecossistema.
Top comments (0)