Pular para o conteúdo principal

Pergunta 16 de 50

Como escolher a quantidade de Partitions?

SêniorTech Lead

Pergunta

"Como você decidiria quantas Partitions um tópico deveria ter?"

O que o entrevistador quer avaliar

Julgamento de dimensionamento — não uma resposta genérica como "depende", mas critérios concretos e as consequências de errar para mais ou para menos.

Resposta rápida

Duas variáveis principais: o throughput-alvo do tópico dividido pelo throughput sustentável de uma única partition, e o número máximo de consumers que o Consumer Group pretende escalar no futuro — já que o número de partitions é o teto real de paralelismo de consumo.

Resposta nível Sênior

Eu começo pelo throughput esperado: se uma partition sustenta, digamos, alguns MB/s de escrita e o tópico precisa de throughput bem maior que isso, preciso de partitions suficientes para dividir essa carga entre brokers. Em seguida, considero o paralelismo de consumo desejado — se o time planeja escalar o consumer até 20 réplicas em pico, o tópico precisa de pelo menos 20 partitions, ou 15 delas ficarão ociosas (Capítulo 6). Prefiro errar um pouco para mais do que para menos, porque aumentar partitions depois muda o resultado do hash de particionamento para novas mensagens (Capítulo 4), quebrando a suposição de que o histórico de uma key inteira está em uma única partition — em geral prefiro migrar para um tópico novo a aumentar partitions de um tópico já em produção com histórico relevante.

Explicação aprofundada

Veja "Aumentar o número de partitions: o que muda" e "Impactos arquiteturais" no Capítulo 4, e o teto de paralelismo no Capítulo 6.

Exemplo financeiro

Um tópico de transações de cartão que hoje processa 500 transações/segundo, com plano de crescer para 5.000 em dois anos, é dimensionado já considerando esse teto — evitando um aumento de partitions no meio do caminho, que quebraria a ordenação histórica por cartaoId.

"Eu sempre uso 12 partitions, é um bom número redondo"

Um número fixo sem relação com throughput-alvo ou paralelismo de consumo planejado é uma escolha arbitrária, não uma decisão de dimensionamento. Pode estar certo por acidente, mas não é uma resposta defensável em entrevista nem em produção.

Pode vir a seguir

Prováveis follow-ups: "o que acontece se você errar essa estimativa?" e "como o Kafka escolhe uma Partition para cada mensagem?".