Kafka fundamentos: partições, consumer groups, exactly-once
⏱ 15 min·⭐ 65 XP
Pré-requisitos (0/1)0%
- ⬜🔄 CDC com Debezium: change data capture sério(Data Engineering Moderna)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Kafka mental model
🗺️ Do produtor ao consumidor, e o que cada camada garante
Tópico
→
O nome lógico do fluxo
Partiçãoordem só existe DENTRO da partição
→
A unidade de ORDEM e de paralelismo
Chave da mensagemé como se garante ordem por entidade
→
Decide a partição — mesma chave, mesma partição
Deslocamentoreprocessar é mover o deslocamento para trás
→
A posição do consumidor, não do broker
Grupo de consumomais instâncias que partições = instância ociosa
→
Distribui partições entre instâncias
Retençãoa mensagem não desaparece ao ser lida
→
Por tempo ou por tamanho — não por consumo
Topic "orders" dividido em 4 partitions:
Partition 0: [event1][event5][event9][...]
Partition 1: [event2][event6][event10][...]
Partition 2: [event3][event7][event11][...]
Partition 3: [event4][event8][event12][...]
Producer com key = user_id:
hash(user_id) % 4 → partition fixa
→ ordem preservada para aquele user
Consumer group "analytics" com 2 consumers:
Consumer A: partitions 0, 2
Consumer B: partitions 1, 3
→ cada event processado EXATAMENTE UMA VEZ no grupo
Consumer group "ml-feature" com 4 consumers:
cada consumer pega 1 partition → max paralelismoRetention e compaction
- Time-based retention: delete eventos > N dias (default 7). Event-sourcing quer infinite — configure.
- Size-based retention: delete quando topic > N bytes.
- Log compaction: preserva última version por key. Ideal pra state stream (user profiles, cache — último valor importa).
- Tombstone: value=null sinaliza delete em compacted topic.
Quiz rápido
Por que o log particionado e ordenado é a abstração central desse tipo de plataforma?
Kafka Streams vs Flink
💡
Kafka Streams: JVM library embed no app, simples, limited. Flink: cluster separado, stateful streaming heavy-duty (windowing, joins complexos, CEP). Em 2026 Flink ganhou mindshare forte pra stream processing "serio". Kafka Streams OK pra simples.
Perguntas frequentes
❓ Como funcionam partição e grupo de consumo?
O tópico é dividido em partições, e cada partição é lida por um consumidor do grupo — o paralelismo máximo é o número de partições. Ordem é garantida dentro da partição, não no tópico. Escolher a chave de partição é escolher o que precisa ficar ordenado.
❓ Entrega exatamente uma vez existe de verdade?
Existe dentro do próprio sistema, com produtor idempotente e transação, e não se estende automaticamente ao seu efeito colateral externo. Na prática, o desenho que funciona é entrega ao menos uma vez com consumidor idempotente — porque é o que sobrevive a reinício e a reprocessamento.
❓ Quantas partições criar?
O suficiente para o paralelismo desejado com margem, sabendo que aumentar depois é possível e reduzir não. Partição em excesso custa metadado, memória e tempo de eleição; de menos limita o consumo. Dimensionar pelo pico de vazão esperado e não pelo atual é o critério.
Fixando
Quiz rápido
Qual é a diferença entre retenção por tempo e compactação por chave?
Quiz rápido
O que determina o paralelismo máximo de consumo de um tópico?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…