Pergunta 17 de 50
Como o Kafka escolhe uma Partition?
Pergunta
"Como o Kafka decide em qual Partition uma mensagem vai ser armazenada?"
O que o entrevistador quer avaliar
Se você entende o mecanismo de particionamento como determinístico e ligado à key — a base para a próxima pergunta quase inevitável sobre ordenação.
Resposta rápida
Se a mensagem tem uma key, o particionador padrão calcula hash(key) % número_de_partitions — como o hash
de uma mesma key é sempre o mesmo, ela cai consistentemente na mesma partition. Sem key, o Kafka distribui as
mensagens entre as partitions de forma aproximadamente uniforme.
Resposta nível Sênior
O particionador do producer decide isso no momento do envio. Com key definida, o cálculo é determinístico:
hash(key) % número_de_partitions, garantindo que toda mensagem com aquela key vá sempre para a mesma
partition — o que preserva ordenação relativa entre mensagens da mesma key. Sem key, as versões recentes do
client Java usam uma estratégia sticky, que agrupa lotes de mensagens em uma partition por vez antes de
rotacionar, otimizando batching de rede sem comprometer a distribuição geral entre partitions. É possível
também fornecer um Partitioner customizado, para casos onde a lógica de distribuição padrão não atende
(por exemplo, priorizar uma partition específica para clientes VIP).
Explicação aprofundada
Veja "Message key e a decisão de particionamento" no Capítulo 4.
Exemplo financeiro
Ao publicar eventos do tópico pix.recebido usando contaId como key, todo evento de uma mesma conta é
roteado de forma determinística para a mesma partition — permitindo que o saldo-service processe os
eventos daquela conta estritamente na ordem em que ocorreram.
"A partition é escolhida aleatoriamente a cada envio"
Mesmo sem key, a distribuição não é aleatória "pura" a cada mensagem — as versões modernas do client usam uma estratégia sticky que agrupa mensagens por lote antes de rotacionar de partition, otimizando throughput de rede. E com key, a escolha é sempre determinística, nunca aleatória.
Pode vir a seguir
Prováveis follow-ups: "o que é Message Key?" e "como funciona a ordenação no Kafka?".
Capítulos relacionados