Pular para o conteúdo principal

Pergunta 27 de 50

O que é Offset?

PlenoSênior

Pergunta

"O que é Offset no Kafka?"

O que o entrevistador quer avaliar

Conhecimento fundamental, geralmente usado para abrir a discussão sobre commit e garantias de entrega. O detalhe que separa uma resposta correta de uma incompleta é entender que offset é local à partition.

Resposta rápida

Offset é um número inteiro crescente, único por partition, que identifica a posição de um registro no log. Para um consumer, ele representa "até onde eu já li" dentro daquela partition específica.

Resposta nível Sênior

Offset não é uma propriedade global do tópico — é local a cada partition. A mesma numeração de offset existe de forma independente em cada partition de um tópico: o offset 100 da partition 0 e o offset 100 da partition 1 são registros completamente diferentes, sem relação entre si. Além disso, existe uma distinção importante entre a posição de leitura em memória do consumer (onde o client já entregou mensagens à aplicação) e o offset commitado (o que fica persistido no Kafka como "processado"). Só o commit torna esse progresso oficial e sobrevive a um restart do consumer.

Explicação aprofundada

Veja "Offset" no Capítulo 3 e o aprofundamento completo no Capítulo 7.

Exemplo financeiro

No tópico pix.recebido, o saldo-service mantém um offset commitado por partition — se ele reiniciar, retoma exatamente do último offset commitado, sem reler eventos já confirmados como processados (a menos que o commit não tenha ocorrido antes do restart).

"Offset é um identificador global da mensagem no tópico"

Offset é local à partition, não ao tópico. Duas mensagens de partitions diferentes podem ter exatamente o mesmo número de offset sem qualquer relação entre elas — confundir isso com um ID global de mensagem é um erro comum.

Pode vir a seguir

Prováveis follow-ups: "o que é Commit?" e "qual a diferença entre Auto Commit e Manual Commit?".

Capítulos relacionados