Arquitetura de software · Comunicação · 8 min de leitura
Streaming de eventos com Kafka
Um log distribuído onde eventos ficam guardados em ordem e vários sistemas leem no próprio ritmo — a espinha dorsal de dados de muitas empresas.
Arraste para o lado para ver o diagrama inteiro.
Fila ou log?
Numa fila clássica a mensagem some depois de consumida. No Kafka, o tópico é um log só de acréscimo: os eventos ficam guardados por um tempo (dias, semanas ou para sempre) e cada consumidor guarda até onde leu — o offset. Assim, faturamento, busca e análise leem o mesmo fluxo sem se atrapalhar, e um serviço novo pode reprocessar a história desde o início.
Partições, ordem e grupos
- Um tópico se divide em partições, espalhadas pelos brokers — é o que dá escala.
- A ordem só é garantida dentro de uma partição. Eventos com a mesma chave (o mesmo pedido) vão sempre para a mesma partição.
- Num grupo de consumidores, cada partição é lida por um único membro; para ler em paralelo, mais partições. Consumidores além do número de partições ficam parados.
- Cada partição tem réplicas em outros brokers (fator de replicação 3 é o usual).
Garantias de entrega
- Pelo menos uma vez (o comum): o consumidor processa e depois confirma o offset; se cair no meio, reprocessa. Logo, o processamento precisa ser idempotente.
- Exatamente uma vez dentro do Kafka: produtor idempotente + transações, para fluxos que leem e escrevem tópicos.
- Gravar no banco e publicar o evento ao mesmo tempo pede o padrão outbox: grava o evento numa tabela na mesma transação e um processo o publica.
Quando usar
Integração entre muitos serviços, captura de mudanças do banco (CDC com Debezium), métricas e logs em volume, processamento em tempo real (Kafka Streams, Flink). Para uma fila de tarefas simples entre dois serviços, um RabbitMQ ou SQS costuma ser mais simples de operar.
Em resumo
- Tópico = log ordenado e guardado, não uma fila que esvazia.
- Ordem só dentro da partição; a chave escolhe a partição.
- Paralelismo do grupo = número de partições.
- Pelo menos uma vez → consumidor idempotente.
- Outbox para gravar e publicar juntos.
Vantagens e custos
- Vazão altíssima e escala horizontal.
- Reprocessar a história com outro consumidor.
- Desacopla produtores de muitos consumidores.
- Operação complexa (ou serviço gerenciado pago).
- Sem ordem global entre partições.
- Exagero para filas pequenas de tarefas.
Perguntar à IA
Monte um prompt pronto sobre Streaming de eventos com Kafka na sua linguagem e no seu caso, e abra num chat gratuito.
O prompt vai para o site que você escolher. Não cole senhas, tokens nem dados reais de clientes. Para Gemini e outros, copie e cole.