Учебник Apache Kafka для начинающих
Apache Kafka — это распределённый лог событий, на котором держится потоковая инфраструктура тысяч компаний: от банков до маркетплейсов. Этот курс объясняет Kafka не как «ещё одну очередь сообщений», а как фундаментальную абстракцию — append-only лог, который меняет то, как системы обмениваются данными в реальном времени.
Вы пройдёте путь от мотивации (зачем вообще нужна потоковая обработка и почему интеграция N систем напрямую — это кошмар M×N) до внутреннего устройства: партиции и параллелизм, оффсеты, репликация и ISR, гарантии доставки и exactly-once. Разберём продюсеров и консьюмеров с группами, Schema Registry, Kafka Connect и Kafka Streams, паттерны event sourcing и CQRS, режим KRaft без ZooKeeper, и то, почему Kafka так быстр. Курс рассчитан на разработчиков и дата-инженеров, которые хотят понимать Kafka глубоко, а не запускать команды наугад.
Курс «Apache Kafka: потоковые данные» состоит из 8 разделов и 30 уроков: Зачем потоковая обработка, Что такое Apache Kafka, Лог как абстракция, партиции и параллелизм, Продюсеры, консьюмеры и группы, Надёжность, хранение и гарантии, Экосистема: схемы, Connect, Streams, ksqlDB, Паттерны, микросервисы и альтернативы и Под капотом и эксплуатация. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Зачем потоковая обработка
- Батч против стрима: два взгляда на данные
Чем потоковая обработка отличается от батчевой, почему «раз в сутки» уже не хватает и где реальное время меняет бизнес.
- Проблема M×N: ад точечных интеграций
Почему прямое соединение N источников с M потребителями превращается в M×N коннекторов и как лог-посредник снижает сложность до M+N.
- Реальное время: где задержка решает
Конкретные сценарии, где обработка событий за секунды, а не за сутки, напрямую влияет на деньги, безопасность и опыт пользователя.
- Где Kafka в карте инструментов данных
Как Kafka соотносится с Airflow, базами данных, очередями и стрим-процессорами — и почему это не конкуренты, а слои одного стека.
- Батч против стрима: два взгляда на данные
2 Что такое Apache Kafka
- Kafka как распределённый лог событий
Что на самом деле представляет собой Kafka: упорядоченный, доступный для дозаписи журнал событий, распределённый по кластеру машин.
- Event streaming и event-driven архитектура
Как переход от «вызови сервис» к «опубликуй событие» меняет архитектуру: развязка, реактивность и поток фактов как клей системы.
- Топик, партиция, оффсет, брокер, кластер
Базовый словарь Kafka: что такое топик и партиция, как оффсет адресует событие, чем брокер отличается от кластера.
- Первый кластер: запуск и первые команды CLI
Практика: поднимаем брокер, создаём топик, пишем и читаем сообщения через kafka CLI, смотрим описание топика.
- Kafka как распределённый лог событий
3 Лог как абстракция, партиции и параллелизм
- Лог как абстракция: почему append-only так силён
Почему простой append-only лог оказывается мощнее сложных структур: неизменяемость, переигрывание истории и единый источник истины.
- Партиции и параллелизм: как Kafka масштабируется
Партиция — единица параллелизма Kafka: как число партиций задаёт потолок пропускной способности и параллельного чтения.
- Ключ партиционирования и порядок внутри партиции
Как ключ сообщения определяет партицию, почему это даёт порядок для связанных событий и чем грозит перекос ключей.
- Лог как абстракция: почему append-only так силён
4 Продюсеры, консьюмеры и группы
- Продюсеры: отправка, ключи, батчинг
Как продюсер отправляет события: выбор партиции, буферизация и батчинг, сжатие — и как это влияет на пропускную способность.
- Подтверждения (acks) и идемпотентный продюсер
Параметр acks и его компромисс между скоростью и надёжностью; как идемпотентный продюсер убирает дубликаты при ретраях.
- Консьюмеры и группы: параллельное чтение
Как группа консьюмеров делит партиции между собой, что такое ребалансировка и почему она и спасает, и мешает.
- Оффсеты и семантики доставки
Коммит оффсетов и три семантики: at-most-once, at-least-once, exactly-once — что они значат и чем оплачиваются.
- Продюсеры: отправка, ключи, батчинг
5 Надёжность, хранение и гарантии
- Репликация и ISR: как не терять данные
Лидер и фолловеры, фактор репликации, набор синхронных реплик (ISR) и параметр min.insync.replicas — механика устойчивости Kafka к сбоям.
- Хранение и retention: Kafka помнит долго
Как Kafka хранит лог сегментами, политики retention по времени и размеру, и почему хранить данные днями и неделями — это норма.
- Лог-компакция: последнее значение по ключу
Политика compact: как Kafka хранит только последнее событие на ключ, превращая топик в «таблицу» текущих состояний.
- Гарантии доставки и exactly-once на практике
Сводим воедино идемпотентность, транзакции и read_committed: как собрать сквозной exactly-once конвейер и где лежат его границы.
- Репликация и ISR: как не терять данные
6 Экосистема: схемы, Connect, Streams, ksqlDB
- Сериализация и Schema Registry
Почему сырой JSON в топике опасен, что даёт Avro/Protobuf со схемой, и как Schema Registry обеспечивает совместимую эволюцию схем.
- Kafka Connect: интеграция без кода
Source и sink коннекторы, как Connect переносит данные между БД и Kafka, и что такое CDC — захват изменений из базы.
- Kafka Streams: обработка потоков
Библиотека Kafka Streams: фильтрация, агрегации, джойны и оконные операции; KStream против KTable и stateful-обработка.
- ksqlDB: SQL над потоками
Обзор ksqlDB: как описывать потоковую обработку декларативным SQL — STREAM и TABLE, непрерывные запросы и push-выборки.
- Сериализация и Schema Registry
7 Паттерны, микросервисы и альтернативы
- Event sourcing, CQRS и лог как источник истины
Паттерны, где лог событий — первичен: event sourcing хранит изменения как события, CQRS разделяет запись и чтение, стриминговый ETL строит проекции.
- Kafka в микросервисах: асинхронная развязка
Как Kafka заменяет синхронные вызовы между сервисами событиями, снижает связность и повышает устойчивость, и паттерн transactional outbox.
- Альтернативы: RabbitMQ, Pulsar, Redpanda
Когда брать Kafka, а когда RabbitMQ; что предлагают Apache Pulsar и Redpanda — и как выбирать осознанно.
- Event sourcing, CQRS и лог как источник истины
8 Под капотом и эксплуатация
- KRaft и почему Kafka быстрая
Отказ от ZooKeeper в пользу KRaft и причины высокой скорости Kafka: последовательная запись, zero-copy и page cache.
- Мониторинг и эксплуатация: лаг консьюмера
Главная метрика здоровья — consumer lag; ключевые метрики брокера и потребителей и как читать ребаланс-штормы.
- Типичные ошибки и антипаттерны
Самые частые грабли: мало партиций, тяжёлые сообщения, неверный ключ, ребаланс-штормы и слабые гарантии — и как их избежать.
- Реальный пример: поток заказов в аналитику
Сквозной разбор: события заказов из приложения через Kafka — обогащение в Streams, проекции в аналитику и поиск.
- KRaft и почему Kafka быстрая