Apache Kafka

Kafka — распределённый лог-брокер. LinkedIn (2011), потом Apache. Не очередь, а append-only лог: сообщения хранятся, читаются много раз, любой consumer держит свой offset.

Термины

Модель

Topic "orders" (partitions=3, replication=3)

partition 0: [m0][m1][m2][m3]...
partition 1: [m0][m1][m2]...
partition 2: [m0][m1][m2][m3][m4]...

Each partition = ordered log, per-partition offset.
Global order — не гарантирован. Per-key order — да, если partition by key.

Wire protocol

Собственный бинарный TCP. Порт 9092. Client discover'ит brokers через bootstrap.servers. Основные RPC: Produce, Fetch, Metadata, JoinGroup, OffsetCommit.

Гарантии доставки

AcksЗначит
acks=0fire-and-forget
acks=1только leader ответил
acks=allвсе ISR (in-sync replicas) записали

С enable.idempotence=true + acks=allexactly-once на уровне producer→broker.

Consumer groups

Topic orders, 6 partitions, group "billing" с 3 consumers:
  consumer-A: partitions 0, 1
  consumer-B: partitions 2, 3
  consumer-C: partitions 4, 5

# consumer падает → rebalance
  consumer-A: 0, 1, 2
  consumer-B: 3, 4, 5

Retention

Сообщения не удаляются после чтения. Хранятся:

KRaft (без ZooKeeper)

До Kafka 3.3 нужен был ZooKeeper для metadata. Теперь встроенный KRaft (Kafka Raft). Один бинарник, меньше операционного оверхеда. С Kafka 4.0 (2025) ZooKeeper удалён окончательно.

Streams / Connect / Schema Registry

Замены и совместимые

См. также

← на главную