Title: Desenvolvimento de Software / Apache Kafka
Tags: Desenvolvimento_de_Software Resumo
On every note of this deck, unless a note says otherwise:
tldr: - Apache Kafka é uma plataforma open source de mensageria/distribuição de dados baseada em pub/sub e focada em streaming de eventos (captura, armazenamento e processamento de eventos em tempo real ou retrospectivo).
- Capacidades centrais:
- Publicar (write) e consumir (read) fluxos de eventos (inclui import/export contínuos)
- Armazenar eventos de forma durável e confiável por um período configurável
- Processar eventos conforme ocorrem (stream) ou depois (replay)
- Evento (registro/mensagem) possui obrigatoriamente: chave, valor e timestamp; Kafka é agnóstico ao formato (ex.: JSON/XML) e usa TCP para comunicação.
- Papéis principais:
- Producer: publica eventos em tópicos
- Consumer: lê/processa eventos de tópicos
- Tópicos organizam eventos correlatos e permitem múltiplos produtores e múltiplos consumidores; eventos são imutáveis após escritos, e mudanças devem ser feitas via novas versões (apoiadas pelo timestamp).
- Partições: tópicos são divididos para ordenar eventos por partição e escalar; normalmente eventos com a mesma chave vão para a mesma partição; cada partição tem um líder e réplicas (redundância/alta disponibilidade).
- Brokers: servidores Kafka que armazenam e gerenciam eventos; vários brokers formam um cluster, habilitando escalabilidade horizontal e maior resiliência.
- Comunicação e consumo:
- Producer envia ao broker líder da partição (com suporte a batch assíncrono por tamanho/latência)
- Consumer faz fetch (PULL) dos líderes usando offset, podendo reconsumir (replay) ao voltar o offset
- Modelo PUSH (producer → broker) e PULL (consumer ← broker)
- Integrações: pode carregar/consumir dados em sistemas como Hadoop com paralelismo por nó/tópico/partição.
- Principais APIs:
- Admin API (gerenciar tópicos/partições/configs)
- Producer API (publicar eventos)
- Consumer API (consumir eventos/grupos)
- Kafka Streams API (processamento de fluxo em tempo real)
- Kafka Connect API (conectores para importar/exportar dados com outros sistemas)
link: https://documentacao.online/estudos/kha3.html

front: (FGV/CÂMARA DOS DEPUTADOS/2023 - Adaptada) 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, julgue o item abaixo. Os eventos no tópico são imutáveis, o que significa que não podem ser modificados depois de escritos.
response: Correto
comment: Perfeito! Após ser inserido num tópico, para garantirmos homogeneidade nas leituras e, consequentemente, uma maior integridade, os eventos não podem mais ser modificados. Correta a alternativa, portanto. (Gabarito: Correto)
title: Apache Kafka
Other fields (not shown on cards):
back: Correto - Perfeito! Após ser inserido num tópico, para garantirmos homogeneidade nas leituras e, consequentemente, uma maior integridade, os eventos não podem mais ser modificados. Correta a alternativa, portanto. (Gabarito: Correto)

front: (FGV/TCE SP/2023) A analista Lúcia administra o AKluster, o cluster do Apache Kafka no TCE SP. Lúcia constatou que o espaço disponível no AKluster para o armazenamento de streams de eventos está acabando. Para expandir a camada de persistência do AKluster, aumentando ainda a escalabilidade, Lúcia deve prover mais espaço de armazenamento ao Apache Kafka mediante novos:
a) topics;
b) brokers;
c) partitions;
d) producers;
e) replications.
response: Alternativa B
comment: Para aumentar a escalabilidade, Lúcia deve apontar mais brokers, ou seja, mais nós no cluster. Vamos aproveitar a questão para revisar os conceitos do Kafka: • topics: os tópicos são divisões do broker, que recebem eventos que compartilham uma mesma chave • partitions: forma de divisão interna dos tópicos • producers: responsáveis por gerar os eventos e escrevê-los nos tópicos e/ou repartições • replications: é a quantidade de réplicas, definindo quantos brokers receberão um mesmo evento Temos, portanto, como alternativa correta, a letra B. (Gabarito: Letra B)
title: Apache Kafka
Other fields (not shown on cards):
back: Alternativa B - Para aumentar a escalabilidade, Lúcia deve apontar mais brokers, ou seja, mais nós no cluster. Vamos aproveitar a questão para revisar os conceitos do Kafka: • topics: os tópicos são divisões do broker, que recebem eventos que compartilham uma mesma chave • partitions: forma de divisão interna dos tópicos • producers: responsáveis por gerar os eventos e escrevê-los nos tópicos e/ou repartições • replications: é a quantidade de réplicas, definindo quantos brokers receberão um mesmo evento Temos, portanto, como alternativa correta, a letra B. (Gabarito: Letra B)

front: (Inédita/Prof. ) Acerca dos conhecimentos sobre Apache Spark, julgue o item que segue. O produtor envia dados ao broker Kafka através de requisições PULL.
response: Errado
comment: Cuidado! A requisição enviada pelo produtor é a PUSH, para “empurrar” o dado, enquanto o consumidor usa as requisições PULL. (Gabarito: Errado)
title: Apache Kafka
Other fields (not shown on cards):
back: Errado - Cuidado! A requisição enviada pelo produtor é a PUSH, para “empurrar” o dado, enquanto o consumidor usa as requisições PULL. (Gabarito: Errado)

front: (CEBRASPE/CAU BR/2024) Acerca do Confluent Kafka, julgue o item a seguir. Broker é um capturador de eventos que pode ser dividido em partições e atua na proteção de eventos com característica de imutabilidade.
response: Errado
comment: O Confluent Kafka é uma aplicação do Kafka voltada para a nuvem. Nele, um broker é uma entidade que faz o gerenciamento dos nós onde as mensagens ficarão armazenadas, recebendo, hospedando as mensagens (ou eventos) em partições, e as encaminhando aos destinatários. Portanto, ele é um elemento de gerenciamento de mensagens, não um capturador de eventos.
title: Apache Kafka
Other fields (not shown on cards):
back: Errado - O Confluent Kafka é uma aplicação do Kafka voltada para a nuvem. Nele, um broker é uma entidade que faz o gerenciamento dos nós onde as mensagens ficarão armazenadas, recebendo, hospedando as mensagens (ou eventos) em partições, e as encaminhando aos destinatários. Portanto, ele é um elemento de gerenciamento de mensagens, não um capturador de eventos.

front: (CEBRASPE/CAU BR/2024) Acerca do Confluent Kafka, julgue o item a seguir. Uma aplicação que publica dados escrevendo em um tópico no Kafka cluster é considerada producer.
response: Certo
comment: Apesar da pergunta ser sobre o Confluent Kafka, sua estrutura é quase idêntica ao Apache Kafka. Nele, os pontos de origem de dados, ou eventos, são chamados de produtores, ou, em inglês, producer. Esse nome também pode aparecer como publisher, de publicadores.
title: Apache Kafka
Other fields (not shown on cards):
back: Certo - Apesar da pergunta ser sobre o Confluent Kafka, sua estrutura é quase idêntica ao Apache Kafka. Nele, os pontos de origem de dados, ou eventos, são chamados de produtores, ou, em inglês, producer. Esse nome também pode aparecer como publisher, de publicadores.

front: (CEBRASPE/AGER MT/2023) Assinale a opção que apresenta exemplos de serviços de mensageria em que há agentes que publicam, conhecidos como publishers, e agentes que leem, conhecidos como consumers.
a) RabbitMQ e Kafka.
b) XML-HTTP Request.
c) ZooKeeper e WSDL.
d) SOAP e Ionic.
e) Data lake e Spark.
response: Alternativa A
comment: Vamos procurar a alternativa que traz dois serviços de mensageria. a) Certo. RabbitMQ e Kafka são dois brokers de mensageria. b) Errado. XML-HTTP Request é uma API de navegador responsável por enviar interações com o navegador para o servidor através de operações AJAX. c) Errado. Zookeper é um elemento do ecossistema Hadoop; WSDL é um formato de arquivos de descoberta de web services. d) Errado. SOAP é um protocolo de Web Services; Ionic é uma plataforma de desenvolvimento híbrido para aplicações móveis; e) Errado. Data Lake é um repositório de dados; Spark é uma ferramenta de análise e processamento distribuído de big data; Portanto, a alternativa correta é a letra A.
title: Apache Kafka
Other fields (not shown on cards):
back: Alternativa A - Vamos procurar a alternativa que traz dois serviços de mensageria. a) Certo. RabbitMQ e Kafka são dois brokers de mensageria. b) Errado. XML-HTTP Request é uma API de navegador responsável por enviar interações com o navegador para o servidor através de operações AJAX. c) Errado. Zookeper é um elemento do ecossistema Hadoop; WSDL é um formato de arquivos de descoberta de web services. d) Errado. SOAP é um protocolo de Web Services; Ionic é uma plataforma de desenvolvimento híbrido para aplicações móveis; e) Errado. Data Lake é um repositório de dados; Spark é uma ferramenta de análise e processamento distribuído de big data; Portanto, a alternativa correta é a letra A.

front: (FGV/Câmara dos Deputados/2023) 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.
a) As partições são divididas em tópicos que os consumidores assinam para receber mensagens.
b) Um tópico pode ter apenas um produtor que escreve eventos nele, porém pode ter muitos consumidores que o assinam.
c) Os eventos no tópico são imutáveis, o que significa que não podem ser modificados depois de escritos.
d) Os produtores atribuem uma chave a cada mensagem e o Kafka a armazena no tópico principal da partição mais vazia.
e) Os consumidores sempre recebem as mensagens na ordem em que foram enviadas.
response: Letra C
comment: Vamos analisar as alternativas. a) Errado. São os tópicos que são divididos em partições. b) Errado. Podemos ter diversos produtores em um tópico, e diversos consumidores também. c) Certo. Os eventos no Kafka são imutáveis, isso quer dizer que eles não podem ser alterados depois de escritos e armazenados no broker. Eventuais modificações devem vir a partir de retificações ou da remoção do evento, com a adição de outro novo. d) Errado. O Kafka não aloca as mensagens conforme a partição mais vazia, e sim conforme o tópico e partição de destino indicados na chave. e) Errado. Não há garantia de entrega das mensagens na ordem. Portanto, temos como gabarito a letra C.
title: Apache Kafka
Other fields (not shown on cards):
back: Letra C - Vamos analisar as alternativas. a) Errado. São os tópicos que são divididos em partições. b) Errado. Podemos ter diversos produtores em um tópico, e diversos consumidores também. c) Certo. Os eventos no Kafka são imutáveis, isso quer dizer que eles não podem ser alterados depois de escritos e armazenados no broker. Eventuais modificações devem vir a partir de retificações ou da remoção do evento, com a adição de outro novo. d) Errado. O Kafka não aloca as mensagens conforme a partição mais vazia, e sim conforme o tópico e partição de destino indicados na chave. e) Errado. Não há garantia de entrega das mensagens na ordem. Portanto, temos como gabarito a letra C.

front: (CEBRASPE/DATAPREV/2023) A respeito do Confluent Kafka, julgue os item a seguir. Um tópico pode ser utilizado pela simples adição de um novo evento de mensagem e, se necessário, pode ser editado.
response: Errado
comment: De fato, podemos utilizar um tópico pela simples adição de um evento. Porém, um dos pilares essenciais do Kafka é a imutabilidade das mensagens. Portanto, não podemos “editar, se necessário”. Sendo assim, afirmativa incorreta.
title: Apache Kafka
Other fields (not shown on cards):
back: Errado - De fato, podemos utilizar um tópico pela simples adição de um evento. Porém, um dos pilares essenciais do Kafka é a imutabilidade das mensagens. Portanto, não podemos “editar, se necessário”. Sendo assim, afirmativa incorreta.

front: (CEBRASPE/DATAPREV/2023) A respeito do Confluent Kafka, julgue os item a seguir. As partições são capazes de gerenciar eventos, porém os tópicos não podem ser quebrados em partições.
response: Errado
comment: Muito pelo contrário. Vamos relembrar a estrutura do Kafka: Portanto, é plenamente possível quebrar tópicos em partições.
title: Apache Kafka
Other fields (not shown on cards):
back: Errado - Muito pelo contrário. Vamos relembrar a estrutura do Kafka: Portanto, é plenamente possível quebrar tópicos em partições.

front: (CEBRASPE/DATAPREV/2023) A respeito do Confluent Kafka, julgue os item a seguir. Um consumer faz a leitura de eventos e pode consumir os registros em qualquer ordem.
response: Correto
comment: Exatamente. Pelo Kafka fornecer um broker que armazena as mensagens por um tempo determinado, o consumidor inscrito no tópico pode consumir a mensagem em qualquer ordem que desejar.
title: Apache Kafka
Other fields (not shown on cards):
back: Correto - Exatamente. Pelo Kafka fornecer um broker que armazena as mensagens por um tempo determinado, o consumidor inscrito no tópico pode consumir a mensagem em qualquer ordem que desejar.

front: (CEBRASPE/SERPRO/2021) A respeito do software Kafka, julgue o item a seguir. Conexões entre producers e consumers suportam mecanismos de autenticação capazes de criptografar com SSL.
response: Correto
comment: Segundo o Apache Kafka, em sua documentação oficial, traduzida: “O Apacha Kafka permite clientes a se conectarem por protocolos SSL. Por padrão, o SSL é desativado, mas pode ser ativado quando necessário”. Portanto, é plenamente possível conectar os clientes (producer e consumer) através de conexões SSL.
title: Apache Kafka
Other fields (not shown on cards):
back: Correto - Segundo o Apache Kafka, em sua documentação oficial, traduzida: “O Apacha Kafka permite clientes a se conectarem por protocolos SSL. Por padrão, o SSL é desativado, mas pode ser ativado quando necessário”. Portanto, é plenamente possível conectar os clientes (producer e consumer) através de conexões SSL.

front: (CEBRASPE/SERPRO/2021) A respeito do software Kafka, julgue o item a seguir. É possível fazer uso da API consumer para publicar eventos em tópicos Kafka.
response: Errado
comment: A publicação de eventos é feita a partir da API producer, não da API consumer.
title: Apache Kafka
Other fields (not shown on cards):
back: Errado - A publicação de eventos é feita a partir da API producer, não da API consumer.

front: (FGV/PGM Niterói/2023) O analista João implementou o PStream, um fluxo de tratamento de dados em tempo real, através do Apache Kafka. O PStream é alimentado pela captura em tempo real das alterações feitas em uma base de dados relacional. Para configurar esta captura de dados relacionais para o PStream, João recorreu aos mecanismos do Apache Kafka para integração com outros sistemas. Esses mecanismos de integração utilizados por João para integrar o Apache Kafka com outros sistemas são baseados na Application Programming Interface (API) do Apache Kafka:
a) Admin;
b) Connect;
c) Streams;
d) Producer;
e) Consumer.
response: Letra B
comment: A questão cobra conhecimentos acerta do Kafka Connect. Segundo a documentação oficial do Apache Kafka: O Kafka Connect é uma ferramenta para streaming de dados de forma escalonável e confiável entre o Apache Kafka e outros sistemas. Ele simplifica a definição rápida de conectores que movem grandes coleções de dados para dentro e para fora do Kafka. O Kafka Connect pode ingerir bancos de dados inteiros ou coletar métricas de todos os seus servidores de aplicativos em tópicos Kafka, disponibilizando os dados para processamento de fluxo com baixa latência. Um trabalho de exportação pode fornecer dados de tópicos Kafka para armazenamento secundário e sistemas de consulta ou para sistemas em lote para análise offline.
title: Apache Kafka
Other fields (not shown on cards):
back: Letra B - A questão cobra conhecimentos acerta do Kafka Connect. Segundo a documentação oficial do Apache Kafka: O Kafka Connect é uma ferramenta para streaming de dados de forma escalonável e confiável entre o Apache Kafka e outros sistemas. Ele simplifica a definição rápida de conectores que movem grandes coleções de dados para dentro e para fora do Kafka. O Kafka Connect pode ingerir bancos de dados inteiros ou coletar métricas de todos os seus servidores de aplicativos em tópicos Kafka, disponibilizando os dados para processamento de fluxo com baixa latência. Um trabalho de exportação pode fornecer dados de tópicos Kafka para armazenamento secundário e sistemas de consulta ou para sistemas em lote para análise offline.

front: (CEBRASPE/SERPRO/2023) Julgue o item subsequente, referente a ferramentas de integração assíncrona e contêineres. O Apache Kafka 3.4 é uma plataforma voltada para processar dados de eventos de streaming ou dados que não têm início ou fim distintos. Ele possui recursos de publicar (escrever) e assinar (ler) fluxos de eventos e de processar fluxos de eventos à medida que ocorrem; portanto, nessa plataforma, prescinde-se do armazenamento de fluxos de eventos de forma durável.
response: Errado
comment: A afirmativa está quase correta - porém, temos um erro essencial. O Kafka não prescinde de um sistema de armazenamento, isso é, não necessita de um sistema de armazenamento. Muito pelo contrário, como ele permite uma leitura fora de ordem, precisamos de um sistema de armazenamento que guarde essas mensagens por determinado tempo.
title: Apache Kafka
Other fields (not shown on cards):
back: Errado - A afirmativa está quase correta - porém, temos um erro essencial. O Kafka não prescinde de um sistema de armazenamento, isso é, não necessita de um sistema de armazenamento. Muito pelo contrário, como ele permite uma leitura fora de ordem, precisamos de um sistema de armazenamento que guarde essas mensagens por determinado tempo.

front: (CEBRASPE/SEFAZ CE/2021) Julgue o próximo item, relativo ao Apache Kafka e ao Kubernetes. O Apache Kafka provê serviço de mensageria e integração de dados, de forma assíncrona, em que produtores e consumidores ficam desacoplados e agnósticos entre si.
response: Certo
comment: Certo, meu caro aluno! Os produtores e consumidores são completamente desacoplados e agnósticos entre si, o que quer dizer que são totalmente independentes e não precisam saber da existência uns dos outros, já que o broker irá intermediar todas as ligações.
title: Apache Kafka
Other fields (not shown on cards):
back: Certo - Certo, meu caro aluno! Os produtores e consumidores são completamente desacoplados e agnósticos entre si, o que quer dizer que são totalmente independentes e não precisam saber da existência uns dos outros, já que o broker irá intermediar todas as ligações.

front: (Inédita/Prof. ) Um desenvolvedor está trabalhando com o Apache Kafka e se depara com a seguinte mensagem em JSON: { "topic": "user_updates", "offset": 12345, "key": "user123", "value": { "name": "John Doe", "email": "johndoe@example.com", "last_login": "2024-04-26T21:42:41Z" } } Qual dos pares de chave-valor é usado para determinar em que partição a mensagem será escrita?
a) Name
b) Key
c) Value
d) Topic
e) Offset
response: Letra B
comment: No Apache Kafka, a chave (key) de uma mensagem é usada para determinar em qual partição a mensagem será escrita. Se uma chave for fornecida, todas as mensagens com a mesma chave serão escritas na mesma partição (desde que o número de partições não mude). Isso garante a ordem das mensagens no nível da chave. Se nenhuma chave for fornecida, as mensagens serão distribuídas entre as partições de um tópico de maneira round-robin. Portanto, no exemplo acima, todas as mensagens com a chave “user123” serão escritas na mesma partição.
title: Apache Kafka
Other fields (not shown on cards):
back: Letra B - No Apache Kafka, a chave (key) de uma mensagem é usada para determinar em qual partição a mensagem será escrita. Se uma chave for fornecida, todas as mensagens com a mesma chave serão escritas na mesma partição (desde que o número de partições não mude). Isso garante a ordem das mensagens no nível da chave. Se nenhuma chave for fornecida, as mensagens serão distribuídas entre as partições de um tópico de maneira round-robin. Portanto, no exemplo acima, todas as mensagens com a chave “user123” serão escritas na mesma partição.