Pular para o conteúdo principal

Pergunta 15 de 50

Por que existem Partitions?

PlenoSênior

Pergunta

"Por que o Kafka divide um tópico em Partitions? Qual problema isso resolve?"

O que o entrevistador quer avaliar

Se você entende a motivação por trás das partitions, não só a definição — essa pergunta costuma vir logo depois de "o que é uma partition", testando se o candidato entende o "porquê", não decorou o "o quê".

Resposta rápida

Partitions existem para resolver dois problemas ao mesmo tempo: paralelismo de consumo (mais partitions significa mais consumers processando em paralelo dentro de um Consumer Group) e escalabilidade de escrita (partitions de um mesmo tópico podem residir em brokers diferentes, distribuindo a carga).

Resposta nível Sênior

Um tópico poderia, em princípio, ser um único log gigante — mas isso limitaria o paralelismo de consumo a um único fluxo sequencial, não importa quantos consumers fossem adicionados ao grupo. Partitions resolvem isso dividindo o tópico em unidades independentes: dentro de um Consumer Group, cada partition é atribuída a exatamente um consumer por vez, então o paralelismo de consumo escala com o número de partitions. Do lado da escrita, partitions de um mesmo tópico podem ser distribuídas entre múltiplos brokers, multiplicando a capacidade de escrita simultânea do tópico.

Explicação aprofundada

Veja "Por que partitions existem" no Capítulo 4.

Exemplo financeiro

Um tópico de transações de cartão com 1 única partition limitaria o processamento a um único consumer por vez, mesmo que o time escalasse o serviço para 10 réplicas — 9 delas ficariam ociosas. Com 10 partitions, as 10 réplicas processam em paralelo de verdade.

"Partitions existem só para performance de escrita"

Performance de escrita é metade da resposta. A outra metade — igualmente importante e frequentemente esquecida — é paralelismo de consumo: sem partitions, adicionar mais consumers a um Consumer Group não aumentaria throughput de processamento algum.

Pode vir a seguir

Prováveis follow-ups: "como você escolheria a quantidade de Partitions?" e "o que acontece se eu tiver mais consumers que Partitions?".

Capítulos relacionados