Kafka nao e um message broker tradicional β€” e uma plataforma de event streaming distribuido baseada em commit log. Mensagens sao persistidas e podem ser re-lidas a qualquer momento.

Kafka como Distributed Commit Log

Kafka armazena mensagens como um log append-only distribuido. Producers escrevem no final do log, consumers leem de qualquer posicao (offset). Diferente de brokers tradicionais, mensagens nao sao deletadas apos consumo.

Producer AProducer BBroker 1 (P0 Leader)Broker 2 (P1 Leader)Broker 3 (P2 Leader)Consumer Group AConsumer Group BKafka Cluster

Termos-chave

TermoDescricao
BrokerUm servidor Kafka. O cluster e composto por multiplos brokers.
TopicCategoria logica de mensagens (ex: "orders", "payments").
PartitionUnidade de paralelismo dentro de um topic. Cada partition e um log ordenado.
OffsetIndice sequencial de cada mensagem dentro de uma partition. Imutavel.
SegmentArquivo fisico no disco. Uma partition e dividida em segments.
LeaderBroker responsavel por leituras e escritas de uma partition.
FollowerReplica que copia dados do leader. Assume se o leader cair.
ISRIn-Sync Replicas β€” conjunto de replicas atualizadas com o leader.
Replication FactorQuantas copias de cada partition existem (ex: 3 = 1 leader + 2 followers).

Como dados sao armazenados

Cada partition e um log append-only dividido em segments. Retencao e configuravel por tempo (retention.ms) ou tamanho (retention.bytes). Mensagens expiradas sao removidas por segment, nao individualmente.

Kafka nao deleta mensagens apos consumo β€” o consumer controla sua posicao (offset). Isso permite replay, auditoria e multiplos consumers independentes.

Cluster: ZooKeeper vs KRaft

AspectoZooKeeper (legado)KRaft (Kafka 3.3+)
MetadadosArmazenados no ZooKeeper externoArmazenados nos proprios brokers
ComponentesCluster Kafka + cluster ZooKeeper separadoApenas brokers Kafka
OperacaoMais complexa (dois sistemas)Simplificada
EscalabilidadeZK e gargalo para muitas partitionsEscala melhor (milhoes de partitions)
Como o Kafka difere de um message broker tradicional como RabbitMQ?
Kafka e um log distribuido β€” mensagens sao persistidas em disco e nao sao removidas apos consumo. Consumers controlam sua posicao (offset), permitindo replay. RabbitMQ e um message broker que remove mensagens apos ack. Kafka oferece throughput muito maior (milhoes/seg), mas RabbitMQ oferece routing mais flexivel (exchanges, bindings). Kafka garante ordem por partition; RabbitMQ garante ordem por fila.