Kafka Basic Flashcards

(20 cards)

1
Q

Что такое Apache Kafka?

A

Распределённый потоковый брокер сообщений с высокой пропускной способностью и отказоустойчивостью.

Используется для обработки событий (event streaming), логов, метрик, интеграции микросервисов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Основные компоненты Kafka

A
  • Producer – отправляет сообщения в Kafka.
  • Consumer – читает сообщения из Kafka.
  • Broker – сервер Kafka, хранящий данные.
  • Topic – логический канал для сообщений.
  • Partition – часть топика, обеспечивающая параллелизм.
  • Offset – уникальный ID сообщения в партиции.
  • ZooKeeper (до Kafka 3.4+) – управлял метаданными брокеров.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Зачем нужны партиции (partitions) в Kafka?

A
  • Масштабируемость: несколько партиций → несколько consumers в группе.
  • Параллелизм: producer/consumer работают с разными партициями одновременно.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Как Kafka обеспечивает отказоустойчивость?

A
  • Репликация (replication factor): данные копируются на несколько брокеров.
  • ISR (In-Sync Replicas) – список реплик, синхронизированных с лидером.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Как работает Kafka Producer?

A

Отправляет сообщения в партицию (по ключу или round-robin).

Может использовать acks (0, 1, all) для подтверждения записи.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Что такое Consumer Group?

A

Группа consumers, совместно обрабатывающих сообщения из топика.

Каждая партиция топика обрабатывается только одним consumer в группе.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Как Kafka гарантирует порядок сообщений?

A

В рамках одной партиции порядок гарантируется.

Между партициями – нет (если ключ не задан).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что такое auto.offset.reset (earliest/latest/none)?

A
  • earliest – читать с начала топика.
  • latest – только новые сообщения.
  • none – ошибка, если offset не найден.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Как Kafka хранит данные?

A

Сообщения хранятся в сегментах (segments) на диске (формат 000000.log).

Удаляются по истечении retention.ms или при достижении log.retention.bytes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Почему Kafka быстрая?

A
  • Zero-copy (прямая передача данных из файла в сеть).
  • Sequential I/O (запись на диск последовательно, а не случайно).
  • Кэширование в PageCache (ОС сама управляет памятью).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое Log Compaction?

A

Удаление старых дубликатов по ключу, оставляя только последнее значение.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Как работает Exactly-Once Semantics (EOS)?

A

Гарантирует, что сообщение обработано ровно один раз (через enable.idempotence=true и транзакции).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Зачем нужен ZooKeeper в Kafka? (Актуально для версий до 3.4)

A

Хранил метаданные: список брокеров, партиций, контроллера кластера.

Сейчас Kafka использует KRaft (встроенный Raft-консенсус).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как обработать дубли сообщений?

A
  • Использовать idempotent producer или транзакции.
  • На стороне consumer – дедупликация по message ID.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Разница между Kafka и RabbitMQ?

A

Kafka | RabbitMQ |
|———–|————-|
| Потоковая обработка | Очереди сообщений |
| Хранение на диске | В памяти (но можно на диск) |
| Высокая пропускная | Низкая задержка |

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Как масштабировать Kafka?

A
  • Увеличивать число партиций (но это необратимо!).
  • Добавлять брокеры в кластер.
17
Q

Что делать, если consumer lag растёт?

A
  • Увеличить число consumers в группе.
  • Оптимизировать обработку (батчинг, async).
18
Q

Как мониторить Kafka?

A
  • JMX-метрики: lag, throughput, request latency.
  • Инструменты: Prometheus + Grafana, Kafka Manager.
19
Q

Как спроектировать событийную систему на Kafka?

A
  • Определить топики (например, orders, payments).
  • Использовать Schema Registry (Avro/Protobuf) для контроля схемы.
20
Q

Как обеспечить доставку сообщений между микросервисами?

A
  • Паттерн Outbox Pattern (через таблицу в БД + Kafka Connect).
  • Transactional Outbox (на основе Kafka транзакций).