Introdução
Eventos
{
"key": "Daniel",
"value": "Entrou em sua conta",
"timestamp": "01-02-2025 8:52:32 AM GMT-03:00"
}Brokers
Tópicos e Partições
Redundância de Partições
Producers e Consumers
Hora da prática!
docker-compose.yml
version: '3.5'
services:
broker:
image: apache/kafka:3.9.0
container_name: broker
environment:
KAFKA_NODE_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT_HOST_INTERNAL:PLAINTEXT,PLAINTEXT_HOST_EXTERNAL:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT_HOST_INTERNAL://broker:9093,PLAINTEXT_HOST_EXTERNAL://localhost:9092'
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@broker:29093'
KAFKA_LISTENERS: 'CONTROLLER://:29093,PLAINTEXT_HOST_INTERNAL://:9093,PLAINTEXT_HOST_EXTERNAL://:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT_HOST_INTERNAL'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_NUM_PARTITIONS: 9
ports:
- "9092:9092"
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- "8080:8080"
environment:
DYNAMIC_CONFIG_ENABLED: 'true'Representa o id do nó no cluster que estamos inseridos KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
É uma lista de items separada por vírgulas. Cada item é par de chave e valor, sendo a chave o nome do listener que vamos criar e o valor o protocolo de comunicação. Estamos usando o PLAINTEXT como protocolo, mas em casos reais é recomendado utilizar um protocolo como SSL para criptografar os dados em trânsito. Declaramos 3 listeners, PLAINTEXT_HOST_INTERNAL que pode ser visto internamente na rede do docker, PLAINTEXT_HOST_EXTERNAL que pode ser visto na rede da máquina que executa o docker pois estamos expondo a porta 9092 e por fim CONTROLLER que é o listener do controller que precisamos declarar separadamente. KAFKA_ADVERTISED_LISTENERS
São os listeners divulgados pelos nós do cluster para ajudar que os clientes encontrem outros nós KAFKA_PROCESS_ROLES
Dita os papeis desse nó do cluster. No caso, como estamos utilizando o modo KRaft, esse nó atua como controller e como broker. KAFKA_CONTROLLER_QUORUM_VOTERS
Indica os outros nós votantes em situações onde é necessário um consenso, como ao eleger um novo líder de uma partição. Como estamos criando um cluster com somente um nó, ele é o único informado. KAFKA_LISTENERS
São todos os listeners declarados por este nó de cluster KAFKA_INTER_BROKER_LISTENER_NAME
É o nome do listener usado para comunicação entre brokers do cluster, para tarefas como a de replicação de tópicos KAFKA_CONTROLLER_LISTENER_NAMES
São os nomes dos listeners usados para comunicação do controller KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
É o fator de replicação de um tópico especial do kafka que armazena os offsets de cada consumer. Ele pode assumir o valor máximo equivalente ao número de nós brokers do cluster. Como vamos utilizar apenas um, seu valor deve ser 1. KAFKA_NUM_PARTITIONS
Quando um tópico é criado automaticamente por consumer o Kafka usa essa configuração para determinar o número de partições padrão a ser utilizado.








