Открыто 10 глав
Первый урок: Пакетный отчёт или поток: сколько ждёт ответ
Практический курс · Apache Kafka
Брокер ответил «принято».
Сообщения нет.
Курс начинается с нуля: что такое Kafka, где её применяют и как она устроена. Дальше каждая глава начинается с отказа: подтверждение пришло, а сообщения нет; консьюмер за ночь не сдвинулся; другая группа остановилась после переименования поля; включённые транзакции не убрали дубли. Сначала воспроизводишь сбой, затем находишь причину и чинишь систему. Всё работает в браузере, на Python, без установки и собственного кластера.
- Проверка смотрит на результат кода, а не на его текст
- Без установки: ни Docker, ни кластера, ни банковской карты
- Первая глава целиком бесплатна — 7 уроков
- Весь код — на Python, в ячейках браузера
Что болит
Сбой в рабочей системе — и глава с разбором
Для каждого симптома — механизм из программы и глава, где ты проверишь его на коде.
Отчёт готов к утру, а спрашивают про «сейчас»
журнал вместо отчётаЧто такое Kafka и где её применяют, журнал на диске, партиции и ключ, компакция в справочник. И отдельно — когда Kafka не нужна.
Продюсер получил «принято», а сообщения в журнале нет
что обещает acksПодтверждение говорит, кто успел записать, а не что сохранилось. Три способа потерять сообщение — в двух уже после «принято».
Консьюмер работает всю ночь, но его оффсет не сдвигается ни на одно сообщение
цикл консьюмера и ребалансКоммит до обработки теряет сообщения, после — даёт дубли. Консьюмера выгоняют из группы, если он слишком долго разбирает батч, а ребаланс стоит секунд простоя и дублей.
Поле переименовали — и другая группа встала
схема в реестреСхема переезжает из кода продюсера и консьюмера в Schema Registry. Форму сообщения проверит схема, смысл — только ты.
Транзакции включили, а дубли в витрине остались
где заканчивается exactly-onceExactly-once собирается из четырёх деталей. За пределами Kafka от дублей защищает приёмник, а не транзакция.
После перезапуска панель обнулилась, но продолжает расти, хотя источник молчит
состояние обработчика и окнаСчётчик, который переживает перезапуск; момент, когда закрывать окно; время события против времени обработки.
Табло зелёное, а данные отстали на полчаса
диагноз по двум числамПо одному числу причину не найти, а пропавшая метрика — тоже сигнал. Падение стойки, возврат из DLQ, чужой консьюмер на полосе.
Кому подойдёт курс
- Инженерам данных и аналитикам, которые получают непрерывный поток, но запускают обработку по расписанию
- Тем, кто не работал с Kafka: курс начинается с того, что это такое и где её применяют, и доходит до реплик, транзакций, обработки потока и эксплуатации
- Тем, кто пишет на Python и не хочет проходить ещё один курс на Java или Scala
- Тем, кого на собеседовании спрашивают не «что такое топик», а «почему здесь Kafka, а не таблица-очередь в базе»
Кому курс не подойдёт
- Тем, кто ищет курс по администрированию кластера. Мы не устанавливаем и не разворачиваем Kafka, не настраиваем TLS и не следим за железом. Ниже объясняем, почему
- Тем, кто совсем не пишет на Python и SQL. Ячейки и задачи курса — на Python и SQL, и их основы здесь не объясняем
- Тем, кто ждёт Java-клиентов, Spring или Scala. Весь код курса написан на Python и запускается в браузере
- Тем, кому нужен настоящий кластер для практики: брокер здесь учебный и детерминированный
Как устроено
Сначала сломать, потом починить
В каждом уроке — исполняемая ячейка и проверка. Важен не код сам по себе, а результат: что попало в журнал, что прочитал консьюмер и где остановился коммит группы.
Ты сам воспроизводишь отказ
Глава начинается с поломки, а не с определения: подтверждение есть, сообщения нет; группа не продвигается; сводка показывает вдвое больше данных. Сначала воспроизводишь отказ в ячейке, затем разбираешь механизм и исправляешь ошибку.
Детерминированный учебный брокер
Учебный брокер работает в Python-песочнице платформы: без Docker, кластера и учётной записи в облаке. Один и тот же запуск всегда даёт тот же отказ. Если модель проще настоящей Kafka, урок говорит об этом прямо.
Результат — в PostgreSQL и ClickHouse
Обработчик пишет результат в те же песочницы PostgreSQL и ClickHouse, что и в других курсах платформы. Дубли в витрине исправляешь SQL-запросами к данным из потока; заодно видишь, как вставка по одному сообщению тормозит приёмник.
Седьмая смена одной истории
2 ноября 2184, 04:40. Ты принимаешь смену.
Полгода ты вёл ночную ленту приёмки. Затем антенна «Хранилища-9» поймала непрерывную несущую: ждать конца суток больше нельзя — к этому моменту половина эфира уже бесполезна. На станции законсервирован уровень связи — диспетчерская, откуда когда-то передавали живой эфир Читальному залу, Приёмному уровню и Машинному отделению. Ты возвращаешь её в строй.
Двадцать одни сутки, двенадцать антенн, сорок восемь кадров в секунду. В каждой главе к эфиру подключается ещё один участник — продюсер или консьюмер — и ломает то, что работало вчера. Наставник тот же: КВЕРИ, старый архивный интеллект с характером кота. Диспетчерская — единственный уровень станции, где он работал до тебя. В первой главе ты спрашиваешь, почему её закрыли. КВЕРИ отвечает: «Спроси меня, когда у тебя впервые пропадёт подтверждённое сообщение».
Маршрут
Четыре участка одной смены
Главы идут по рабочей цепочке: что такое Kafka и как устроен журнал, продюсер и реплики, консьюмер-группы, формат данных, гарантии доставки, обработка потока, Kafka Connect и эксплуатация.
- I
Основы
Что такое Kafka и как она устроена: журнал, партиции и ключ — и честный разбор, когда она не нужна
- kf1Зачем Kafka: журнал вместо отчёта
- II
Оба конца провода
Запись, которую не потеряли, и чтение, которое не задвоило и не встало
- kf2Продюсер: запись без потерь
- kf3Консьюмер: чтение без дублей и простоя
- III
Чужие на линии
Контракт сообщения, exactly-once и твой собственный обработчик между эфиром и потребителем
- kf4Формат данных и Schema Registry
- kf5Гарантии доставки и транзакции
- kf6Обработка потока
- IV
Смена сдана
Края потока, ночь под аварией и итоговый проект, который обязан пережить второй прогон
- kf7Интеграция: Kafka Connect, CDC и outbox
- kf8Эксплуатация: мониторинг, отказы, доступ
- kf9Смена сдана: итоговый проект
- kf10Углублённо
Программа
10 глав, 59 уроков, 19 ч 5 мин
Программа утверждена. Для готовых глав показываем уроки и прогресс; остальные откроем по мере готовности.
Зачем Kafka: журнал вместо отчёта
Первая смена по эту сторону диспетчерской: смотритель спрашивает про «сейчас», а у тебя на руках вчерашний отчёт. Глава объясняет, что такое Kafka, из каких частей она состоит и где её применяют, и честно разбирает, когда она не нужна вовсе. Дальше — как топик устроен внутри: журнал из сегментов на диске, срок хранения, компакция до справочника и число партиций, посчитанное арифметикой.
Продюсер: запись без потерь
Что происходит с сообщением между «отправил» и «лежит в журнале» — и почему это не одно и то же. Ты трижды теряешь сообщения своими руками, и дважды это сообщения, которые брокер УЖЕ назвал принятыми. К концу главы ты называешь цену каждой настройки надёжности, а не только её имя, и умеешь показать числами, что «тормозит Kafka» — это чаще всего «ждёт наш собственный шлюз».
Консьюмер: чтение без дублей и простоя
Ломается не эфир, а его разбор. Сначала — как читает консьюмер: цикл poll, позиция и коммит, и почему коммит до обработки теряет сообщения, а после — даёт дубли. Потом живой консьюмер работает всю ночь и не продвигается ни на одно сообщение, а ребаланс стоит секунд простоя и дублей. В конце — табло отставания, по которому видно не «плохо», а что именно чинить, и перечитанное окно без задвоенных строк в витрине.
Формат данных и Schema Registry
Форма сообщения перестаёт быть договорённостью двух своих концов, когда на линии появляется чужой консьюмер. Глава учит договариваться так, чтобы договорённость проверяла машина: сообщение разбирается на пять частей, схема переезжает из кода обеих сторон в Schema Registry, правило совместимости читается как ответ на вопрос «кто выкатывается первым». И заканчивается границей, которую не закрывает ни один реестр: форму проверяет схема, смысл — только твоя проверка на данных.
Гарантии доставки и транзакции
«Гарантии доставки и транзакции» — не галочка в конфиге, а конструкция из четырёх деталей. Ты учишься видеть доставку цепочкой стыков и мерить её сверкой из четырёх чисел, пока сверка ещё что-то доказывает. Дальше транзакции продюсера: что они накрывают и почему оффсет коммитят внутри транзакции. И граница: за пределами Kafka exactly-once собирает сам приёмник.
Обработка потока
Пять глав подряд ломалась Kafka. Здесь она безупречна в каждом уроке, и каждый раз виноват код между эфиром и потребителем — твой. Обработчик, который не встаёт на одном неразбираемом сообщении; счётчик, переживающий перезапуск; окна бесконечного потока и момент, когда окно можно закрывать; время события против времени обработки и решение про опоздавших; и выбор инструмента — Kafka Streams, Flink, Spark или ksqlDB.
Интеграция: Kafka Connect, CDC и outbox
Края потока — там, где он перестаёт быть потоком. С одной стороны в топик приезжает чужая база через Kafka Connect, а не твоим скриптом: CDC, ключ, правки и удаления вместо ежесуточного перелива. С другой — тот же поток идёт в витрину, и выясняется, почему запись в базу и отправка в топик не склеиваются в одно действие, отчего минутная сводка показывает вдвое больше, чем приехало, и почему «вставлять сразу» кладёт витрину к вечеру.
Эксплуатация: мониторинг, отказы, доступ
Ночь, в которой всё видно раньше, чем звонит заказчик. Диагноз ставится по паре чисел, а не по одному, и слышать надо не только громкое число, но и замолчавшее. Стойка падает без единого твоего действия, и у тебя есть ровно одна ручка. DLQ собирается так, чтобы из него можно было ВЕРНУТЬ сообщение. И доступ: кто ты для кластера и что тебе разрешено — SASL, TLS и ACL.
Смена сдана: итоговый проект
Академия присылает письмо на пять строк и двое суток срока. Глава учит мерить поток раньше, чем писать код, и собирать приём, обработку, витрину и наблюдаемость так, чтобы они работали ОДНОВРЕМЕННО, а не по очереди. Второй прогон на тех же данных обязан дать то же самое — и это доказывается числом, а не словом. Заканчивается глава экзаменом на другом окне эфира.
Углублённо
Разборы для тех, кто уже работает с Kafka или хочет глубже основного курса: производительность продюсера, heartbeat и статическое членство, чтение только закрытых транзакций, поток и таблица, соединение двух потоков, SMT и конвертеры Kafka Connect, квоты, KRaft и tiered storage, share groups. Основной курс на эти уроки не опирается — их берут по желанию.
Границы курса
Чего в курсе нет — и почему
Лучше узнать границы курса здесь, чем на собеседовании. Предпоследний урок ещё раз показывает их на карте соседних территорий.
Настоящий кластер и его администрирование
Код запускаешь в браузере без прямого доступа к сети и сокетам. Чтобы установить и развернуть кластер, настроить TLS и Kerberos, следить за железом и проводить хаос-тесты, нужны отдельные машины.
Учебный брокер моделирует реплики, acks, таймауты сессии, ребаланс и транзакции. Один и тот же сценарий всегда даёт тот же отказ. Если модель расходится с настоящей Kafka, урок говорит об этом прямо.
Kafka Streams, Flink и Spark как инструменты
Kafka Streams, Flink и Spark работают на JVM, которой нет в браузере, поэтому заданий по их настройке здесь не будет.
Механизм обработки потока ты пишешь сам на Python, а не настраиваешь готовый инструмент. В последнем уроке главы сравнишь свой код с тем, что уже дают Kafka Streams, Flink и Spark, и разберёшь, когда нужна библиотека, а когда отдельный кластер.
Безопасность кластера целиком
Сертификаты, Kerberos и шифрование канала настраивают на машинах и в инфраструктуре доступа. В браузерной песочнице такую работу не показать.
Курс разбирает ту часть безопасности, с которой инженер данных работает сам: ACL на топик и квоты клиентов на общем канале. Остальные темы перечислены в карте соседних территорий — так границы курса видны заранее.
FAQ
Частые вопросы
Нет, и это не «мы упростили установку» — её нет вовсе. Учебный брокер живёт python-ячейкой прямо во вкладке: ни докера, ни кластера, ни облачного аккаунта, ни кредитной карты. На курсах рынка установка и запуск кластера съедают от модуля до половины программы; здесь это время уходит на семантику.
Смена начинается в 04:40
Первая глава открыта целиком: 7 уроков без подписки и карты. После неё решишь, продолжать ли.