Хранилище-9 · уровень связи

Открыто 10 глав

Первый урок: Пакетный отчёт или поток: сколько ждёт ответ

0/59
уроков пройдено
0· +10 за урок
Начать бесплатно

Практический курс · Apache Kafka

Брокер ответил «принято».
Сообщения нет.

Курс начинается с нуля: что такое Kafka, где её применяют и как она устроена. Дальше каждая глава начинается с отказа: подтверждение пришло, а сообщения нет; консьюмер за ночь не сдвинулся; другая группа остановилась после переименования поля; включённые транзакции не убрали дубли. Сначала воспроизводишь сбой, затем находишь причину и чинишь систему. Всё работает в браузере, на Python, без установки и собственного кластера.

  • Проверка смотрит на результат кода, а не на его текст
  • Без установки: ни Docker, ни кластера, ни банковской карты
  • Первая глава целиком бесплатна — 7 уроков
  • Весь код — на Python, в ячейках браузера
Отчёт заканчивается, журнал — нет. В него можно войти в любом месте, и у каждого консьюмера своя позиция: одно общее число лага спрячет ту партицию, которая встала.
10 глав
по одному новому участнику эфира в каждой
59
уроков с исполняемыми ячейками
19 ч 5 мин
по сумме всех уроков, без округления
7
уроков бесплатно, без карты

Что болит

Сбой в рабочей системе — и глава с разбором

Для каждого симптома — механизм из программы и глава, где ты проверишь его на коде.

  • Отчёт готов к утру, а спрашивают про «сейчас»

    журнал вместо отчёта

    Что такое Kafka и где её применяют, журнал на диске, партиции и ключ, компакция в справочник. И отдельно — когда Kafka не нужна.

  • Продюсер получил «принято», а сообщения в журнале нет

    что обещает acks

    Подтверждение говорит, кто успел записать, а не что сохранилось. Три способа потерять сообщение — в двух уже после «принято».

  • Консьюмер работает всю ночь, но его оффсет не сдвигается ни на одно сообщение

    цикл консьюмера и ребаланс

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

  • Поле переименовали — и другая группа встала

    схема в реестре

    Схема переезжает из кода продюсера и консьюмера в Schema Registry. Форму сообщения проверит схема, смысл — только ты.

  • Транзакции включили, а дубли в витрине остались

    где заканчивается exactly-once

    Exactly-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 и эксплуатация.

  1. I

    Основы

    Что такое Kafka и как она устроена: журнал, партиции и ключ — и честный разбор, когда она не нужна

    • kf1Зачем Kafka: журнал вместо отчёта
  2. II

    Оба конца провода

    Запись, которую не потеряли, и чтение, которое не задвоило и не встало

    • kf2Продюсер: запись без потерь
    • kf3Консьюмер: чтение без дублей и простоя
  3. III

    Чужие на линии

    Контракт сообщения, exactly-once и твой собственный обработчик между эфиром и потребителем

    • kf4Формат данных и Schema Registry
    • kf5Гарантии доставки и транзакции
    • kf6Обработка потока
  4. IV

    Смена сдана

    Края потока, ночь под аварией и итоговый проект, который обязан пережить второй прогон

    • kf7Интеграция: Kafka Connect, CDC и outbox
    • kf8Эксплуатация: мониторинг, отказы, доступ
    • kf9Смена сдана: итоговый проект
    • kf10Углублённо

Программа

10 глав, 59 уроков, 19 ч 5 мин

Программа утверждена. Для готовых глав показываем уроки и прогресс; остальные откроем по мере готовности.

Глава 1бесплатнооткрыта

Зачем Kafka: журнал вместо отчёта

Первая смена по эту сторону диспетчерской: смотритель спрашивает про «сейчас», а у тебя на руках вчерашний отчёт. Глава объясняет, что такое Kafka, из каких частей она состоит и где её применяют, и честно разбирает, когда она не нужна вовсе. Дальше — как топик устроен внутри: журнал из сегментов на диске, срок хранения, компакция до справочника и число партиций, посчитанное арифметикой.

что такое Kafka и когда она не нужнажурнал, сегменты и срок хранениякомпакция журнала
7 уроков · 2 ч 10 минартефакт: расчёт числа партиций на своих числах
Глава 2 PROоткрыта

Продюсер: запись без потерь

Что происходит с сообщением между «отправил» и «лежит в журнале» — и почему это не одно и то же. Ты трижды теряешь сообщения своими руками, и дважды это сообщения, которые брокер УЖЕ назвал принятыми. К концу главы ты называешь цену каждой настройки надёжности, а не только её имя, и умеешь показать числами, что «тормозит Kafka» — это чаще всего «ждёт наш собственный шлюз».

уровень подтверждениялидер и ISRзащита от дублей у продюсера
6 уроков · 1 ч 52 минартефакт: регламент надёжности записи с ценой каждой настройки
Глава 3 PROоткрыта

Консьюмер: чтение без дублей и простоя

Ломается не эфир, а его разбор. Сначала — как читает консьюмер: цикл poll, позиция и коммит, и почему коммит до обработки теряет сообщения, а после — даёт дубли. Потом живой консьюмер работает всю ночь и не продвигается ни на одно сообщение, а ребаланс стоит секунд простоя и дублей. В конце — табло отставания, по которому видно не «плохо», а что именно чинить, и перечитанное окно без задвоенных строк в витрине.

цикл консьюмера и коммитребаланс как паузалаг и перечитывание прошлого
5 уроков · 1 ч 41 минартефакт: табло отставания по партициям
Глава 4 PROоткрыта

Формат данных и Schema Registry

Форма сообщения перестаёт быть договорённостью двух своих концов, когда на линии появляется чужой консьюмер. Глава учит договариваться так, чтобы договорённость проверяла машина: сообщение разбирается на пять частей, схема переезжает из кода обеих сторон в Schema Registry, правило совместимости читается как ответ на вопрос «кто выкатывается первым». И заканчивается границей, которую не закрывает ни один реестр: форму проверяет схема, смысл — только твоя проверка на данных.

заголовки и два времени сообщенияреестр схем и имя в реестреправило совместимости
5 уроков · 1 ч 40 минартефакт: карточка контракта топика
Глава 5 PROоткрыта

Гарантии доставки и транзакции

«Гарантии доставки и транзакции» — не галочка в конфиге, а конструкция из четырёх деталей. Ты учишься видеть доставку цепочкой стыков и мерить её сверкой из четырёх чисел, пока сверка ещё что-то доказывает. Дальше транзакции продюсера: что они накрывают и почему оффсет коммитят внутри транзакции. И граница: за пределами Kafka exactly-once собирает сам приёмник.

транзакции продюсерарежим чтения и граница закрытогооффсеты в приёмнике
4 урока · 1 ч 19 минартефакт: сверка из четырёх чисел
Глава 6 PROоткрыта

Обработка потока

Пять глав подряд ломалась Kafka. Здесь она безупречна в каждом уроке, и каждый раз виноват код между эфиром и потребителем — твой. Обработчик, который не встаёт на одном неразбираемом сообщении; счётчик, переживающий перезапуск; окна бесконечного потока и момент, когда окно можно закрывать; время события против времени обработки и решение про опоздавших; и выбор инструмента — Kafka Streams, Flink, Spark или ksqlDB.

состояние обработчика и changelog-топикокна и время событияпоток и справочник
6 уроков · 1 ч 57 мин
Глава 7 PROоткрыта

Интеграция: Kafka Connect, CDC и outbox

Края потока — там, где он перестаёт быть потоком. С одной стороны в топик приезжает чужая база через Kafka Connect, а не твоим скриптом: CDC, ключ, правки и удаления вместо ежесуточного перелива. С другой — тот же поток идёт в витрину, и выясняется, почему запись в базу и отправка в топик не склеиваются в одно действие, отчего минутная сводка показывает вдвое больше, чем приехало, и почему «вставлять сразу» кладёт витрину к вечеру.

Kafka Connect и CDCoutbox: исходящие события в той же транзакцииприёмник в витрину
5 уроков · 1 ч 37 минартефакт: минутная сводка по антеннам, живая
Глава 8 PROоткрыта

Эксплуатация: мониторинг, отказы, доступ

Ночь, в которой всё видно раньше, чем звонит заказчик. Диагноз ставится по паре чисел, а не по одному, и слышать надо не только громкое число, но и замолчавшее. Стойка падает без единого твоего действия, и у тебя есть ровно одна ручка. DLQ собирается так, чтобы из него можно было ВЕРНУТЬ сообщение. И доступ: кто ты для кластера и что тебе разрешено — SASL, TLS и ACL.

лаг во времени и тревогиDLQ с происхождениемSASL, TLS и ACL
4 урока · 1 ч 11 минартефакт: табло из четырёх чисел, DLQ и таблица прав
Глава 9 PROоткрыта

Смена сдана: итоговый проект

Академия присылает письмо на пять строк и двое суток срока. Глава учит мерить поток раньше, чем писать код, и собирать приём, обработку, витрину и наблюдаемость так, чтобы они работали ОДНОВРЕМЕННО, а не по очереди. Второй прогон на тех же данных обязан дать то же самое — и это доказывается числом, а не словом. Заканчивается глава экзаменом на другом окне эфира.

портрет потокаитоговый проект в четыре заходаэкзамен на другом окне
6 уроков · 2 ч 1 минартефакт: эфир целиком: приём, обработка, витрина, табло
Глава 10 PROоткрыта

Углублённо

Разборы для тех, кто уже работает с Kafka или хочет глубже основного курса: производительность продюсера, heartbeat и статическое членство, чтение только закрытых транзакций, поток и таблица, соединение двух потоков, SMT и конвертеры Kafka Connect, квоты, KRaft и tiered storage, share groups. Основной курс на эти уроки не опирается — их берут по желанию.

производительность продюсераKRaft и tiered storageshare groups
11 уроков · 3 ч 37 мин

Границы курса

Чего в курсе нет — и почему

Лучше узнать границы курса здесь, чем на собеседовании. Предпоследний урок ещё раз показывает их на карте соседних территорий.

  • Настоящий кластер и его администрирование

    Код запускаешь в браузере без прямого доступа к сети и сокетам. Чтобы установить и развернуть кластер, настроить 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 уроков без подписки и карты. После неё решишь, продолжать ли.