Kafka Basic Flashcards
(20 cards)
Что такое Apache Kafka?
Распределённый потоковый брокер сообщений с высокой пропускной способностью и отказоустойчивостью.
Используется для обработки событий (event streaming), логов, метрик, интеграции микросервисов.
Основные компоненты Kafka
- Producer – отправляет сообщения в Kafka.
- Consumer – читает сообщения из Kafka.
- Broker – сервер Kafka, хранящий данные.
- Topic – логический канал для сообщений.
- Partition – часть топика, обеспечивающая параллелизм.
- Offset – уникальный ID сообщения в партиции.
- ZooKeeper (до Kafka 3.4+) – управлял метаданными брокеров.
Зачем нужны партиции (partitions) в Kafka?
- Масштабируемость: несколько партиций → несколько consumers в группе.
- Параллелизм: producer/consumer работают с разными партициями одновременно.
Как Kafka обеспечивает отказоустойчивость?
- Репликация (replication factor): данные копируются на несколько брокеров.
- ISR (In-Sync Replicas) – список реплик, синхронизированных с лидером.
Как работает Kafka Producer?
Отправляет сообщения в партицию (по ключу или round-robin).
Может использовать acks (0
, 1
, all
) для подтверждения записи.
Что такое Consumer Group?
Группа consumers, совместно обрабатывающих сообщения из топика.
Каждая партиция топика обрабатывается только одним consumer в группе.
Как Kafka гарантирует порядок сообщений?
В рамках одной партиции порядок гарантируется.
Между партициями – нет (если ключ не задан).
Что такое auto.offset.reset
(earliest/latest/none)?
-
earliest
– читать с начала топика. -
latest
– только новые сообщения. -
none
– ошибка, если offset не найден.
Как Kafka хранит данные?
Сообщения хранятся в сегментах (segments) на диске (формат 000000.log
).
Удаляются по истечении retention.ms
или при достижении log.retention.bytes
.
Почему Kafka быстрая?
- Zero-copy (прямая передача данных из файла в сеть).
- Sequential I/O (запись на диск последовательно, а не случайно).
- Кэширование в PageCache (ОС сама управляет памятью).
Что такое Log Compaction?
Удаление старых дубликатов по ключу, оставляя только последнее значение.
Как работает Exactly-Once Semantics (EOS)?
Гарантирует, что сообщение обработано ровно один раз (через enable.idempotence=true
и транзакции).
Зачем нужен ZooKeeper в Kafka? (Актуально для версий до 3.4)
Хранил метаданные: список брокеров, партиций, контроллера кластера.
Сейчас Kafka использует KRaft (встроенный Raft-консенсус).
Как обработать дубли сообщений?
- Использовать idempotent producer или транзакции.
- На стороне consumer – дедупликация по message ID.
Разница между Kafka и RabbitMQ?
Kafka | RabbitMQ |
|———–|————-|
| Потоковая обработка | Очереди сообщений |
| Хранение на диске | В памяти (но можно на диск) |
| Высокая пропускная | Низкая задержка |
Как масштабировать Kafka?
- Увеличивать число партиций (но это необратимо!).
- Добавлять брокеры в кластер.
Что делать, если consumer lag растёт?
- Увеличить число consumers в группе.
- Оптимизировать обработку (батчинг, async).
Как мониторить Kafka?
- JMX-метрики: lag, throughput, request latency.
- Инструменты: Prometheus + Grafana, Kafka Manager.
Как спроектировать событийную систему на Kafka?
- Определить топики (например,
orders
,payments
). - Использовать Schema Registry (Avro/Protobuf) для контроля схемы.
Как обеспечить доставку сообщений между микросервисами?
- Паттерн Outbox Pattern (через таблицу в БД + Kafka Connect).
- Transactional Outbox (на основе Kafka транзакций).