Pular para o conteúdo principal

Pergunta 14 de 50

O que é uma Partition?

PlenoSênior

Pergunta

"O que é uma Partition no Kafka?"

O que o entrevistador quer avaliar

Se você entende partition como a unidade real de armazenamento, ordenação e paralelismo — a peça mais citada em praticamente toda pergunta subsequente sobre Kafka.

Resposta rápida

Partition é uma subdivisão ordenada e imutável de um tópico — o log físico propriamente dito. Cada partition é uma sequência de registros identificados por um offset crescente, armazenada em um broker (com réplicas em outros brokers, quando o replication factor é maior que 1).

Resposta nível Sênior

Uma partition é um log append-only: novos registros são sempre adicionados ao final, nunca alterados in-place, cada um identificado por um offset local àquela partition. É a unidade que viabiliza paralelismo de consumo (cada partition é lida por um único consumer dentro de um Consumer Group) e escalabilidade de escrita (partitions de um mesmo tópico podem residir em brokers diferentes). A key de uma mensagem (Capítulo 4) determina, via hash, em qual partition ela é armazenada — e é essa decisão que define quais eventos ficam ordenados entre si.

Explicação aprofundada

Veja "Partition" no Capítulo 3 e o aprofundamento sobre ordenação no Capítulo 4.

Exemplo financeiro

No tópico pix.recebido, a partition de destino de cada evento é determinada pelo hash do contaId — todos os eventos da mesma conta caem na mesma partition, preservando a ordem relativa entre eles.

"Mais partitions é sempre melhor"

Mais partitions aumentam o paralelismo máximo, mas também o overhead de metadados do cluster, o tempo de rebalance e o número de file handles por broker. O número certo é dimensionado pelo throughput-alvo e pelo número de consumers que o time pretende escalar — não por um valor arbitrário "para garantir".

Pode vir a seguir

Prováveis follow-ups: "por que existem Partitions?" e "como o Kafka escolhe uma Partition para uma mensagem?".