📨 Раздел 15 · 30 вопросов

Kafka

30 вопросов и ответов в разделе Kafka.

Вопросы этого раздела

  1. Что такое топик (topic) в Kafka
  2. Что такое партиция (partition) и зачем она нужна
  3. Как данные распределяются по партициям
  4. Что такое ключ сообщения и как он влияет на партиционирование
  5. Что такое Consumer Group
  6. Как работает балансировка консьюмеров в группе
  7. Можно ли иметь больше консьюмеров, чем партиций
  8. Что произойдёт при добавлении нового консьюмера в группе
  9. Какие гарантии доставки сообщений предоставляет Kafka
  10. В чём разница между at-most-once, at-least-once и exactly-once
  11. Как настроить exactly-once семантику
  12. Что такое offset в Kafka
  13. Как работает commit offset
  14. В чём разница между auto commit и manual commit
  15. Что такое rebalancing и когда он происходит
  16. Что такое репликация в Kafka
  17. Что такое leader и follower реплики
  18. Что такое ISR (In-Sync Replicas)
  19. Как Kafka обеспечивает отказоустойчивость
  20. Что такое producer acknowledgment и какие режимы существуют (acks=0,1,all)
  21. Что такое batch в Kafka producer
  22. Как работает компрессия сообщений
  23. Что такое idempotent producer
  24. Как обрабатывать ошибки при чтении сообщений
  25. Что такое DLQ (Dead Letter Queue)
  26. Как мониторить lag консьюмера
  27. Что такое retention policy
  28. Как удаляются старые сообщения из топика
  29. Можно ли читать сообщения из определённой партиции
  30. Как реализовать фильтрацию сообщений на стороне консьюмера

Навигатор по разделу

30 вопросов для подготовки к собеседованию на Junior 🟢, Middle 🟡 и Senior 🔴 Java Developer.


📋 Все вопросы

# Вопрос Уровень сложности
1 Что такое топик (topic) в Kafka ⭐
2 Что такое партиция (partition) и зачем она нужна ⭐⭐
3 Как данные распределяются по партициям ⭐⭐
4 Что такое ключ сообщения и как он влияет на партиционирование ⭐⭐
5 Что такое Consumer Group ⭐⭐
6 Как работает балансировка консьюмеров в группе ⭐⭐
7 Можно ли иметь больше консьюмеров, чем партиций ⭐⭐
8 Что произойдёт при добавлении нового консьюмера в группе ⭐⭐
9 Какие гарантии доставки сообщений предоставляет Kafka ⭐⭐
10 В чём разница между at-most-once, at-least-once и exactly-once ⭐⭐⭐
11 Как настроить exactly-once семантику ⭐⭐⭐
12 Что такое offset в Kafka ⭐⭐
13 Как работает коммит offset ⭐⭐
14 В чём разница между auto commit и manual commit ⭐⭐
15 Что такое rebalancing и когда он происходит ⭐⭐⭐
16 Что такое репликация в Kafka ⭐⭐
17 Что такое leader и follower реплики ⭐⭐
18 Что такое ISR (In-Sync Replicas) ⭐⭐⭐
19 Как Kafka обеспечивает отказоустойчивость ⭐⭐⭐
20 Что такое producer acknowledgment и какие режимы существуют ⭐⭐
21 Что такое batch в Kafka producer ⭐⭐
22 Как работает компрессия сообщений ⭐⭐
23 Что такое idempotent producer ⭐⭐⭐
24 Как обрабатывать ошибки при чтении сообщений ⭐⭐
25 Что такое DLQ (Dead Letter Queue) ⭐⭐
26 Как мониторить lag консьюмера ⭐⭐
27 Что такое retention policy ⭐⭐
28 Как удаляются старые сообщения из топика ⭐⭐
29 Можно ли читать сообщения из определённой партиции ⭐⭐
30 Как реализовать фильтрацию сообщений на стороне консьюмера ⭐⭐

🗺️ Карта зависимостей тем

                    ┌──────────────────────────────────────────┐
                    │   ОСНОВЫ KAFKA (1-4)                     │
                    │   1. Топик                               │
                    │   2. Партиция                            │
                    │   3. Распределение по партициям          │
                    │   4. Ключ сообщения                      │
                    └──────────────────┬───────────────────────┘
                                       │
            ┌──────────────────────────┼──────────────────────────┐
            ▼                          ▼                          ▼
    ┌───────────────┐        ┌───────────────┐        ┌────────────────────┐
    │ CONSUMER       │        │ DELIVERY       │        │ PRODUCER           │
    │ GROUPS (5-8)   │        │ GUARANTEES     │        │ (20-23)            │
    │ 5. Consumer    │        │ (9-11)         │        │ 20. acks=0,1,all   │
    │    Group       │        │ 9. Гарантики   │        │ 21. Batch          │
    │ 6. Балансир.   │        │ 10. At-most/   │        │ 22. Компрессия     │
    │ 7. Больше конс.│        │     least/     │        │ 23. Idempotent     │
    │ 8. Добавление  │        │     exactly    │        │    producer        │
    │    консьюмера  │        │ 11. Настройка  │        │                    │
    └───────┬───────┘        └───────┬───────┘        └────────┬───────────┘
            │                        │                        │
            └────────────────────────┼────────────────────────┘
                                     ▼
                    ┌──────────────────────────────────────────┐
                    │   OFFSET И REBALANCING (12-15)           │
                    │   12. Offset                             │
                    │   13. Commit offset                      │
                    │   14. Auto vs Manual commit              │
                    │   15. Rebalancing                        │
                    └──────────────────────────────────────────┘
                                     │
            ┌────────────────────────┼────────────────────────┐
            ▼                        ▼                        ▼
    ┌───────────────┐        ┌───────────────┐        ┌────────────────────┐
    │ РЕПЛИКАЦИЯ     │        │ ОШИБКИ И       │        │ RETENTION И        │
    │ И FA (16-19)   │        │ DLQ (24-26)    │        │ ФИЛЬТРАЦИЯ         │
    │ 16. Репликация │        │ 24. Обработка  │        │ (27-30)            │
    │ 17. Leader/    │        │     ошибок     │        │ 27. Retention      │
    │    Follower    │        │ 25. DLQ        │        │ 28. Удаление       │
    │ 18. ISR        │        │ 26. Lag monit. │        │ 29. Чтение партиции│
    │ 19. Fault      │        │                │        │ 30. Фильтрация     │
    │    tolerance   │        │                │        │                    │
    └───────────────┘        └───────────────┘        └────────────────────┘

🎯 Рекомендуемый порядок изучения

🟢 Уровень Junior (недели 1-2)

Шаг Тема Файлы Цель
1 Основы Q1, Q2, Q3, Q4 Топик, партиция, ключ, распределение
2 Consumer Group Q5, Q6 Группа, балансировка
3 Offset и commit Q12, Q13, Q14 Offset, commit types
4 Delivery guarantees Q9, Q10 At-most, at-least, exactly-once
5 Producer acks Q20 acks=0,1,all

🟡 Уровень Middle (недели 3-4)

Шаг Тема Файлы Цель
1 Rebalancing Q7, Q8, Q15 Когда происходит, eager vs cooperative
2 Replication Q16, Q17, Q18 ISR, leader/follower, fault tolerance
3 Batch и compression Q21, Q22 batch.size, linger.ms, lz4/gzip/snappy
4 Error handling Q24, Q25 Retry, DLQ, poison pill
5 Retention Q27, Q28 retention.ms, retention.bytes, cleanup.policy
6 Monitoring Q26 Consumer lag, tools

🔴 Уровень Senior (недели 5-6)

Шаг Тема Файлы Цель
1 Exactly-once Q11 EOS v1 vs v2, Producer ID/Epoch, Outbox
2 Idempotent producer Q23 PID, Epoch, max.in.flight, deduplication
3 Fault tolerance deep Q19 RF, min.insync.replicas, unclean election
4 Advanced consumer Q29, Q30 assign() vs subscribe(), filtering patterns
5 ISR deep dive Q18 ISR shrink/expand, LEO, HW, leader epoch
6 Chaos engineering Q15 (Senior) Cascading rebalancing, GC pauses, tuning

🔗 Ключевые связи между темами

Тема: Основы Kafka

Q1 (Топик) → Q2 (Партиция) → Q3 (Распределение) → Q4 (Ключ)

Ключевые связи:

  • Q2 ↔ Q16: Партиции реплицируются для отказоустойчивости
  • Q3 ↔ Q20: acks=all влияет на то, когда сообщение считается доставленным
  • Q4 ↔ Q3: Ключ определяет партицию через MurmurHash

Тема: Consumer Groups

Q5 (Consumer Group) → Q6 (Балансировка) → Q7 (Больше консьюмеров)
     ↓
Q8 (Добавление консьюмера) → Q15 (Rebalancing)

Ключевые связи:

  • Q5 ↔ Q12: Каждый консьюмер коммитит offset для каждой партиции
  • Q6 ↔ Q15: Балансировка — это и есть ребаланс
  • Q7 ↔ Q8: Лишние консьюмеры простаивают, добавление нового → ребаланс

Тема: Offset и Delivery

Q12 (Offset) → Q13 (Commit) → Q14 (Auto vs Manual)
     ↓
Q9 (Гарантии) → Q10 (At-most/at-least/exactly) → Q11 (Настройка exactly-once)

Ключевые связи:

  • Q13 ↔ Q9: Коммит ДО обработки = at-most-once, ПОСЛЕ = at-least-once
  • Q14 ↔ Q13: Auto commit = проще, но риск потери; Manual = контроль
  • Q10 ↔ Q11: Exactly-once требует transactional producer

Тема: Producer

Q20 (acks) → Q21 (Batch) → Q22 (Компрессия) → Q23 (Idempotent)

Ключевые связи:

  • Q20 ↔ Q23: Idempotent producer + acks=all = exactly-once delivery в топик
  • Q21 ↔ Q22: Batch + compression = максимальный throughput
  • Q23 ↔ Q11: Idempotent producer — основа exactly-once

Тема: Fault Tolerance

Q16 (Репликация) → Q17 (Leader/Follower) → Q18 (ISR) → Q19 (Fault tolerance)

Ключевые связи:

  • Q17 ↔ Q18: Leader всегда в ISR, followers выходят из ISR если отстают
  • Q18 ↔ Q19: ISR shrink → снижение fault tolerance
  • Q16 ↔ Q20: acks=all ждёт подтверждения от всех ISR реплик

Тема: Operations

Q24 (Обработка ошибок) → Q25 (DLQ) → Q26 (Lag monitoring)
     ↓
Q27 (Retention) → Q28 (Удаление) → Q29 (Чтение партиции) → Q30 (Фильтрация)

Ключевые связи:

  • Q24 ↔ Q25: DLQ — последнее средство после retries
  • Q25 ↔ Q26: Lag monitoring помогает обнаружить проблемы до DLQ
  • Q27 ↔ Q28: Retention policy определяет когда и как удаляются сообщения
  • Q29 ↔ Q30: assign() для чтения конкретных партиций, фильтрация на стороне консьюмера

🎓 Шпаргалка: что знать для каждого уровня

🟢 Junior

  • Топик = логический канал, партиция = под-канал для параллелизма
  • Consumer Group = механиз деления партиций между консьюмерами
  • Offset = позиция в партиции, commit = сохранение позиции
  • acks=0 (fire-and-forget), acks=1 (leader only), acks=all (все ISR)
  • At-most-once, at-least-once, exactly-once — три семантики доставки

🟡 Middle

  • Rebalancing: eager (полный стоп) vs cooperative (частичный)
  • ISR: реплики, которые догнали лидера. Leader всегда в ISR
  • Batch: batch.size, linger.ms, compression — три рычага throughput
  • DLQ: очередь для сообщений, которые не удалось обработать после N retries
  • Retention: retention.ms (время) + retention.bytes (размер на партицию)
  • Sticky partitioning: Kafka 2.4+ заменяет round-robin

🔴 Senior

  • Exactly-once: EOS v2 (Kafka 2.5+), Producer ID + Epoch, transaction coordinator
  • Idempotent producer: deduplication на уровне брокера через PID + sequence
  • ISR shrink/expand: мониторинг критичен для fault tolerance
  • Cascading rebalancing: GC pause → exclude → rebalance → overload → ещё один падает
  • Outbox pattern: для exactly-once Kafka-to-Database
  • Leader Epoch: отслеживает потерю данных при failover

📝 Формат каждого файла

Каждый файл содержит:

  • 🟢 Junior Level — базовое понимание, простые аналогии, примеры
  • 🟡 Middle Level — внутренности, типичные ошибки, практические примеры
  • 🔴 Senior Level — deep dive, edge cases, production experience, monitoring
  • 🎯 Шпаргалка для интервью — ключевые тезисы, частые вопросы, красные флаги, связанные темы