← Questões de Programação

Programação · FGV · 2023

Questão comentada de Programação

Apache Kafka é um sistema de mensageria altamente escalável, que usa tópicos e partições para enfileiramento de mensagens. Sobre os componentes arquitetônicos do Kafka, assinale a afirmativa correta.

Gabarito: C

O Apache Kafka organiza a comunicação em um modelo de publicação e assinatura, no qual produtores enviam eventos para tópicos e consumidores leem esses eventos a partir desses tópicos. Pense no tópico como uma “fila inteligente” dividida em partições, que ajudam o sistema a escalar e a distribuir a carga. Cada partição mantém a ordem dos eventos apenas dentro dela, e os dados, depois de gravados, não são alterados como se fossem um post já publicado: você até pode adicionar novos eventos, mas não reescreve o que já foi registrado facilmente. É justamente por isso que a alternativa C está correta: os eventos no tópico são imutáveis após serem escritos. No Kafka, a mensagem gravada fica armazenada no log da partição e recebe um offset, que funciona como seu endereço sequencial. Isso combina com a ideia de log append-only, muito cobrada em prova. As outras alternativas tentam inverter conceitos básicos. Tópicos não são divididos em partições; é o contrário: os tópicos são compostos por partições. Também não existe a regra de que um tópico tenha apenas um produtor. Vários produtores podem escrever no mesmo tópico, e vários consumidores podem ler dele, inclusive em grupos de consumo. Outro detalhe importante: a chave da mensagem pode influenciar a escolha da partição, mas não existe essa história de “partição mais vazia” como regra padrão. E a ordem das mensagens não é garantida em todo o tópico, apenas dentro de cada partição. Então, se a banca tenta empurrar uma ordem perfeita e universal, desconfie na hora.

Continue treinando

Questões relacionadas