Перейти к содержанию

📡 Kafka

Kafka — распределённый лог сообщений (брокер): сервисы пишут события в топики, другие читают их независимо. Хранит и доставляет записи, а не «преобразует» их по пути.

Status: Draft

1. Сущности
Сущность Роль
Broker Узел кластера: принимает, хранит, отдаёт сообщения
Topic Именованный поток событий (логический канал)
Partition Часть topic: упорядоченный лог на диске
Record (message) Запись: key, value, timestamp (+ headers)
Producer Пишет в topic
Consumer Читает из topic
2. Поток данных
Producer  →  topic (N partitions)  →  Consumer
  • Сообщение попадает в конкретную partition (по key, round-robin или явно).
  • Порядок FIFO гарантируется внутри partition, не по всему topic.
  • Один key → одна partition → порядок для этого key сохраняется.
3. Consumer group и offset

Consumer group — набор consumer'ов с одним group.id: партиции топика делятся между ними (масштабирование чтения).

Понятие Смысл
Offset Позиция в partition («докуда прочитали»)
Commit Сохранить offset (чтобы после рестарта продолжить)
Rebalance Перераздача партиций при входе/выходе member'а

Один partition в группе читает один consumer; больше consumer'ов, чем партиций — лишние простаивают.

4. Надёжность
Механизм Смысл
Replication Partition копируется на несколько broker'ов
Leader / followers Пишет и читает (обычно) leader; followers — реплики
ISR In-Sync Replicas — реплики, не отстающие от leader
Retention Сколько хранить по времени/размеру (независимо от «прочитали или нет»)

Ack'и producer'а (acks=all и т.п.) и min.insync.replicas задают, насколько «жёстко» ждать запись на реплики.

5. Кластер и метаданные

Метаданные кластера (топики, партиции, кто leader) хранятся отдельно от полезной нагрузки сообщений.

Режим Как
KRaft Метаданные внутри Kafka (текущий стандарт новых кластеров)
ZooKeeper Внешний ансамбль — legacy; новые инсталляции без него

На собесе: «раньше ZK, сейчас KRaft» — достаточно; детали кворума — уже ops-глубина.

6. CLI

Имена скриптов зависят от дистрибутива (kafka-topics.sh / kafka-topics); идея одна.

# топики
kafka-topics --bootstrap-server localhost:9092 --list
kafka-topics --bootstrap-server localhost:9092 \
  --create --topic orders --partitions 3 --replication-factor 2

# запись / чтение
kafka-console-producer --bootstrap-server localhost:9092 --topic orders
kafka-console-consumer --bootstrap-server localhost:9092 \
  --topic orders --from-beginning

--bootstrap-server — любой доступный broker для старта клиента.

Вопросы

В разработке..