Data Science и аналитика

Учебник Apache Kafka для начинающих

30 уроков · 8 разделов · бесплатно, без регистрации

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. 1 Зачем потоковая обработка

    1. Батч против стрима: два взгляда на данные

      Чем потоковая обработка отличается от батчевой, почему «раз в сутки» уже не хватает и где реальное время меняет бизнес.

    2. Проблема M×N: ад точечных интеграций

      Почему прямое соединение N источников с M потребителями превращается в M×N коннекторов и как лог-посредник снижает сложность до M+N.

    3. Реальное время: где задержка решает

      Конкретные сценарии, где обработка событий за секунды, а не за сутки, напрямую влияет на деньги, безопасность и опыт пользователя.

    4. Где Kafka в карте инструментов данных

      Как Kafka соотносится с Airflow, базами данных, очередями и стрим-процессорами — и почему это не конкуренты, а слои одного стека.

  2. 2 Что такое Apache Kafka

    1. Kafka как распределённый лог событий

      Что на самом деле представляет собой Kafka: упорядоченный, доступный для дозаписи журнал событий, распределённый по кластеру машин.

    2. Event streaming и event-driven архитектура

      Как переход от «вызови сервис» к «опубликуй событие» меняет архитектуру: развязка, реактивность и поток фактов как клей системы.

    3. Топик, партиция, оффсет, брокер, кластер

      Базовый словарь Kafka: что такое топик и партиция, как оффсет адресует событие, чем брокер отличается от кластера.

    4. Первый кластер: запуск и первые команды CLI

      Практика: поднимаем брокер, создаём топик, пишем и читаем сообщения через kafka CLI, смотрим описание топика.

  3. 3 Лог как абстракция, партиции и параллелизм

    1. Лог как абстракция: почему append-only так силён

      Почему простой append-only лог оказывается мощнее сложных структур: неизменяемость, переигрывание истории и единый источник истины.

    2. Партиции и параллелизм: как Kafka масштабируется

      Партиция — единица параллелизма Kafka: как число партиций задаёт потолок пропускной способности и параллельного чтения.

    3. Ключ партиционирования и порядок внутри партиции

      Как ключ сообщения определяет партицию, почему это даёт порядок для связанных событий и чем грозит перекос ключей.

  4. 4 Продюсеры, консьюмеры и группы

    1. Продюсеры: отправка, ключи, батчинг

      Как продюсер отправляет события: выбор партиции, буферизация и батчинг, сжатие — и как это влияет на пропускную способность.

    2. Подтверждения (acks) и идемпотентный продюсер

      Параметр acks и его компромисс между скоростью и надёжностью; как идемпотентный продюсер убирает дубликаты при ретраях.

    3. Консьюмеры и группы: параллельное чтение

      Как группа консьюмеров делит партиции между собой, что такое ребалансировка и почему она и спасает, и мешает.

    4. Оффсеты и семантики доставки

      Коммит оффсетов и три семантики: at-most-once, at-least-once, exactly-once — что они значат и чем оплачиваются.

  5. 5 Надёжность, хранение и гарантии

    1. Репликация и ISR: как не терять данные

      Лидер и фолловеры, фактор репликации, набор синхронных реплик (ISR) и параметр min.insync.replicas — механика устойчивости Kafka к сбоям.

    2. Хранение и retention: Kafka помнит долго

      Как Kafka хранит лог сегментами, политики retention по времени и размеру, и почему хранить данные днями и неделями — это норма.

    3. Лог-компакция: последнее значение по ключу

      Политика compact: как Kafka хранит только последнее событие на ключ, превращая топик в «таблицу» текущих состояний.

    4. Гарантии доставки и exactly-once на практике

      Сводим воедино идемпотентность, транзакции и read_committed: как собрать сквозной exactly-once конвейер и где лежат его границы.

  6. 6 Экосистема: схемы, Connect, Streams, ksqlDB

    1. Сериализация и Schema Registry

      Почему сырой JSON в топике опасен, что даёт Avro/Protobuf со схемой, и как Schema Registry обеспечивает совместимую эволюцию схем.

    2. Kafka Connect: интеграция без кода

      Source и sink коннекторы, как Connect переносит данные между БД и Kafka, и что такое CDC — захват изменений из базы.

    3. Kafka Streams: обработка потоков

      Библиотека Kafka Streams: фильтрация, агрегации, джойны и оконные операции; KStream против KTable и stateful-обработка.

    4. ksqlDB: SQL над потоками

      Обзор ksqlDB: как описывать потоковую обработку декларативным SQL — STREAM и TABLE, непрерывные запросы и push-выборки.

  7. 7 Паттерны, микросервисы и альтернативы

    1. Event sourcing, CQRS и лог как источник истины

      Паттерны, где лог событий — первичен: event sourcing хранит изменения как события, CQRS разделяет запись и чтение, стриминговый ETL строит проекции.

    2. Kafka в микросервисах: асинхронная развязка

      Как Kafka заменяет синхронные вызовы между сервисами событиями, снижает связность и повышает устойчивость, и паттерн transactional outbox.

    3. Альтернативы: RabbitMQ, Pulsar, Redpanda

      Когда брать Kafka, а когда RabbitMQ; что предлагают Apache Pulsar и Redpanda — и как выбирать осознанно.

  8. 8 Под капотом и эксплуатация

    1. KRaft и почему Kafka быстрая

      Отказ от ZooKeeper в пользу KRaft и причины высокой скорости Kafka: последовательная запись, zero-copy и page cache.

    2. Мониторинг и эксплуатация: лаг консьюмера

      Главная метрика здоровья — consumer lag; ключевые метрики брокера и потребителей и как читать ребаланс-штормы.

    3. Типичные ошибки и антипаттерны

      Самые частые грабли: мало партиций, тяжёлые сообщения, неверный ключ, ребаланс-штормы и слабые гарантии — и как их избежать.

    4. Реальный пример: поток заказов в аналитику

      Сквозной разбор: события заказов из приложения через Kafka — обогащение в Streams, проекции в аналитику и поиск.