Pergunta 19 de 50
Como funciona a ordenação?
Pergunta
"Como funciona a ordenação de mensagens no Kafka?"
O que o entrevistador quer avaliar
O entendimento correto e completo do mecanismo de ordenação — não uma resposta vaga de "sim, o Kafka é ordenado", mas a explicação de onde essa garantia realmente vive.
Resposta rápida
O Kafka garante que mensagens escritas em uma mesma partition são lidas exatamente na ordem em que foram escritas. Isso vem da estrutura de log: uma partition é uma sequência linear e imutável, então a ordem de escrita é, por construção, a ordem de leitura.
Resposta nível Sênior
Ordenação no Kafka é uma propriedade da partition, não do tópico. Cada partition é um log append-only, onde cada registro recebe um offset sequencial crescente — como a estrutura é estritamente sequencial, ler do início ao fim reproduz exatamente a ordem de escrita. Um tópico com múltiplas partitions, porém, não é uma única sequência: é um conjunto de sequências independentes, cada uma com seu próprio relógio de offsets. Duas mensagens em partitions diferentes não têm relação de ordem definida entre si. É a key (Capítulo 4) que decide em qual partition uma mensagem cai, e portanto qual conjunto de mensagens fica de fato ordenado entre si.
Explicação aprofundada
Veja "Ordenação dentro da partition — e a ausência de ordenação global" no Capítulo 4.
Exemplo financeiro
Dois eventos do mesmo contaId — "PIX recebido" seguido de "saldo debitado por estorno" — chegam ao
consumer na ordem correta porque compartilham a mesma key e, portanto, a mesma partition. Eventos de contas
diferentes, em partitions diferentes, não têm relação de ordem entre si — o que é aceitável, porque não há
dependência real entre eles.
"Kafka processa tudo na ordem em que foi publicado"
Essa afirmação ignora que um tópico com múltiplas partitions distribui mensagens entre elas — a ordem global entre partitions diferentes não é garantida, mesmo que os eventos tenham sido publicados em sequência muito próxima no tempo real.
Pode vir a seguir
Prováveis follow-ups: "o Kafka garante ordenação global?" e "o que aconteceria se eu usasse um UUID aleatório como key?".
Capítulos relacionados