Learning Platform
Глоссарий Troubleshooting
Урок 01.02 · 16 мин
Продвинутый
Course roadmapModule overviewLearning paths

Курс — 21 модуль, ~90 часов чтения и lab-практики. Он построен слоями: от архитектуры процессов (что такое JM/TM и как они общаются) через runtime-механики (network, memory, state) и протоколы (checkpoint, watermarks) к специализированным фичам (Calcite, ForStDB, adaptive scheduling) и production-практикам. Capstone в конце — реальный проект production-grade Flink-платформы.

Курс не предполагает линейного чтения “от модуля 1 до модуля 21”. Многие модули самодостаточны и могут быть прочитаны в порядке практической необходимости. Но фундамент (модули 02-08) лучше идти линейно — каждый следующий опирается на предыдущий.

Что такое stream processing: концепции и модели

Карта 21 модуля

Дорожная карта Flink Internals
00 — ВведениеТекущий модуль. Зачем нужны internals, roadmap, source code tour.
01 — ФилософияStream first, state и time как first-class citizens. Эволюция Flink от 1.x до 2.2.
Фундамент
02 — АрхитектураJobManager (Dispatcher, ResourceManager, JobMaster), TaskManager, slot model, StreamGraph/JobGraph/ExecutionGraph, HA, scheduler types.
03 — Network stackCredit-based flow control, LocalBufferPool, RemoteInputChannel, subpartitions, network buffers tuning.
04 — Memory modelManaged memory vs heap vs direct, framework/task/managed/network/jvm-metaspace breakdown, OOM debugging.
State и Checkpoints
05 — State backendsHashMapStateBackend, RocksDB internals (LSM, MemTable, SSTable, compaction), incremental checkpoints, state TTL.
06 — CheckpointChandy-Lamport ABS, barrier propagation, alignment, unaligned checkpoints, async vs sync, retention, CheckpointCoordinator.
07 — SavepointsSavepoint vs checkpoint, format v2, State Processor API, state migration, schema evolution, savepoint compatibility.
08 — WatermarksPer-channel watermarks, idleness detection, AssignerWithPeriodicWatermarks vs Punctuated, custom strategies, lateness handling.
09 — SQL/CalciteCalcite planner, RelNode tree, optimizer rules, EXPLAIN PLAN deep, Volcano planner, физический план.
Новое в Flink 2.x
10 — Disaggregated stateFLIP-423 disaggregated state, ForStDB, async state API, latency tradeoffs, cache management, миграция с RocksDB.
11 — Adaptive schedulingAdaptive Scheduler, Adaptive Batch Scheduler, Reactive mode, partial resources, rescaling without restart.
12 — Exactly-onceTwo-phase commit protocol, TwoPhaseCommitSinkFunction, Kafka transactional producer, idempotent sinks.
13 — Source/Sink V2FLIP-27 Source API, SplitEnumerator vs SourceReader, FLIP-191 Sink V2, async commit phase.
14 — LakehousePaimon (Flink Table Store renamed), Fluss (stream-lakehouse table format), CDC patterns, table API integration.
Специальные темы
15 — CEPPattern API, NFA-based pattern matching, state in CEP, temporal patterns.
16 — AI/StreamingFlink 2.1/2.2 CREATE MODEL, ML_PREDICT, VECTOR_SEARCH, RAG patterns, model serving в streaming.
17 — СериализацияForматы (Avro, Protobuf, JSON), PojoSerializer, TypeInformation, Kryo, типы schema evolution.
18 — PyFlinkPython API, gateway architecture, Beam wrapper, performance considerations.
19 — PerformanceProfiling, flame graphs, async profiler, метрики, observability stack, Prometheus + Grafana.
Production и Capstone
20 — Multi-region DRMulti-region deployment, active-active vs active-passive, savepoint replication, failover automation.
21 — CapstoneProduction-grade Flink platform: K8s Operator, CI/CD для job-ов, secrets management, multi-tenancy.

Раскладка по фазам

Phase 1: Введение (модули 00-01)

Два первых модуля — это setup. Если вы уже знаете Flink и хотите быстрее, можно прочитать только текущий урок и сразу прыгнуть в модуль 02. Но рекомендую не пропускать модуль 01 (Философия Flink) — он даёт mental model “stream first”, без которой многие архитектурные решения Flink (например, почему batch — это bounded stream) выглядят странными.

Phase 2: Фундамент (модули 02-08)

Это — обязательная последовательность для всех. Каждый модуль строится на предыдущем:

  • Архитектура (02) объясняет, какие процессы у Flink и как они общаются. Без этого никакая дальнейшая дискуссия про checkpoint или backpressure не имеет смысла.
  • Network (03) — как байты передаются между Task-ами. Это база для понимания backpressure и checkpoint alignment.
  • Memory (04) — как Flink режет TM heap, что такое managed memory, почему OOM в Flink часто не выглядит как обычный Java OOM.
  • State backends (05) — как state хранится. Если вы не понимаете LSM-tree и RocksDB compaction, вы не сможете тюнить state-heavy job-ы.
  • Checkpoint (06) — алгоритм и его реализация. Самый сложный модуль фундамента.
  • Savepoints (07) — практическое применение state: миграция, schema evolution, State Processor API.
  • Watermarks (08) — event-time механика. Без знания нюансов watermark holders и idleness detection у вас будут регулярные production-инциденты с “потерянными” окнами.

Phase 3: SQL слой (модуль 09)

Часть инженеров с Flink не работают на DataStream API, а живут в SQL мире. Если вы — один из них, обязательно читайте модуль 09. Calcite — отдельная экосистема, и без понимания, как Calcite планирует ваш SELECT, тюнить SQL job-ы невозможно.

Это — самая динамичная часть курса. Disaggregated state (10) — главное архитектурное изменение Flink 2.0+. Adaptive scheduling (11) стал default-ом в 2.0. Exactly-once (12) — это про 2PC protocol, который понятен только в контексте transactional Kafka. Source/Sink V2 (13) — современный connector API, к которому все мигрировали в 2.x. Lakehouse (14) — это про Paimon и Fluss, два проекта, которые меняют ландшафт streaming-data.

Phase 5: Специальные темы (модули 15-18)

Эти модули можно читать в любом порядке, в зависимости от ваших задач:

  • CEP (15) — если у вас patterns/anomaly detection workloads.
  • AI (16) — если интегрируете LLM/ML в streaming pipeline. Самая свежая тема — большая часть фич появилась в 2.1/2.2.
  • Сериализация (17) — если вы боретесь с производительностью или schema evolution.
  • PyFlink (18) — если вы пишете на Python.

Phase 6: Production и Capstone (модули 19-21)

Performance (19) — это про инструменты диагностики: flame graphs, async-profiler, метрики, dashboards. Multi-region DR (20) — про disaster recovery в реальных production-настройках. Capstone (21) — это финальный проект, где вы собираете всё вместе: K8s Operator, CI/CD, secrets, multi-tenancy.

Killer-модули

В курсе есть четыре модуля экстра-глубины, без которых невозможно ни тюнить, ни дебажить production:

Killer-модули
05 — State backends RocksDBLSM-tree, MemTable, SSTable, compaction, BlockCache, BloomFilter, ColumnFamilies — без этого state-heavy jobs не тюнятся.
06 — Checkpoint protocolChandy-Lamport, barriers, alignment, unaligned checkpoints — самая сложная и самая ценная тема для диагностики долгих чекпоинтов.
09 — Calcite SQL planningRelNode, Volcano planner, optimizer rules. Без этого SQL-job-ы тюнятся по cargo-cult.
10 — Disaggregated stateForStDB, async state API, latency tradeoffs. Это будущее, и вам надо понимать когда мигрировать.

Эти четыре модуля в сумме — около 30% курса по объёму, но дают, вероятно, 60% долгосрочного value.

Рекомендуемые learning paths

В зависимости от вашей задачи, рекомендую разные подмножества курса.

Path 1: Production debugging (быстрый старт)

Если вам нужно срочно научиться диагностировать production-инциденты:

  1. 00 -> 01 (контекст и mental model — 1 час)
  2. 02 (архитектура — must)
  3. 06 (checkpoint internals — must)
  4. 03 (network и backpressure)
  5. 05 (state backends)
  6. 19 (performance и observability)

Это — минимум для production-инженера. ~25 часов чтения.

Path 2: SQL/Table API focus

Если вы живёте в Flink SQL:

  1. 00 -> 02 (introduction + архитектура)
  2. 09 (Calcite — главный модуль для вас)
  3. 05 (state — даже в SQL это критично)
  4. 06 (checkpoint)
  5. 14 (Lakehouse: Paimon)
  6. 16 (AI: ML_PREDICT в SQL)

Path 3: Миграция с 1.x на 2.x

Если у вас legacy Flink 1.18/1.20 и впереди upgrade:

  1. 00 -> 01 (особенно 01: эволюция от 1.x до 2.2)
  2. 02 (адаптивный scheduler — default в 2.0)
  3. 05 -> 10 (state и disaggregated state)
  4. 11 (adaptive scheduling)
  5. 13 (Source V2 — нужно мигрировать ваши коннекторы)
  6. 20-21 (deployment patterns)

Path 4: Полный курс

Если у вас есть время (~3-4 месяца, ~5 часов в неделю) — идите линейно. Это даст самое глубокое понимание, и вы будете лучше многих core-разработчиков Flink в Apache.

Формат уроков

Каждый урок единого формата:

  • MDX-урок — теория с диаграммами, code references к классам Flink, callout-блоками. 20-30 минут чтения каждый.
  • Quiz после урока — 3-5 вопросов (multiple-choice + true/false) разной сложности — от conceptual до analytical. Senior-курс, поэтому большинство вопросов — на анализ.
  • Module exam — 6 deep-вопросов в конце каждого модуля, passing threshold 70%.
  • Labs на ключевые модули — поднятие реального Flink кластера (Docker Compose), эксперименты с reproducible failures, прочтение JM/TM-логов.
  • Code references — каждый урок ссылается на конкретные классы Flink (org.apache.flink.runtime.dispatcher.Dispatcher, etc.), которые рекомендуется открыть в IDE параллельно с чтением.

Стек курса

  • Apache Flink 2.2 (current stable, May 2026)
  • Java 21 (LTS, поддерживается с Flink 1.19)
  • Apache Kafka 4.0 (transactional producer для exactly-once)
  • Kubernetes + Flink Kubernetes Operator (recommended deployment)
  • RocksDB 8.x / ForStDB (state backends)
  • Apache Paimon + Fluss (lakehouse примеры)
  • Docker Compose для labs (минимальная инфра)
  • Prometheus + Grafana для observability

Что НЕ покрываем

  • Yarn deployment — кратко упомянем как legacy, deep dive нет.
  • Mesos — устарел, removed в 1.13.
  • Стандартные DataStream-программы — это материал basic-курса. Если не умеете писать KeyedProcessFunction — этот курс не для вас.
  • Подробное API connector-ов — обзорно покроем V2 архитектуру, но не каждый connector.
  • PyFlink на уровне API — затронем internals (как работает gateway), но не API design.

Где встречаемся со source code

Вот несколько конкретных классов Flink, к которым курс часто возвращается. Их полезно знать наизусть:

Top-20 классов Flink internals
org.apache.flink.runtime.dispatcher.DispatcherПринимает job submissions через REST, создаёт JobMaster для каждого job.
org.apache.flink.runtime.jobmaster.JobMasterPer-job orchestrator: владеет ExecutionGraph, общается с TaskExecutor-ами, инициирует checkpoints.
org.apache.flink.runtime.resourcemanager.ResourceManagerУправляет TaskManager-ами, выдаёт слоты JobMaster-ам по запросу.
org.apache.flink.runtime.taskexecutor.TaskExecutorTaskManager-главный класс. Регистрируется с RM, исполняет Tasks в Slots.
org.apache.flink.runtime.executiongraph.ExecutionGraphRuntime-граф job-а: каждая ExecutionVertex — параллельная инстанция оператора.
org.apache.flink.streaming.api.graph.StreamGraphЛогический граф DataStream-программы — собирается из user-кода.
org.apache.flink.runtime.jobgraph.JobGraphПромежуточный граф: после operator chaining, готовый к отправке в кластер.
org.apache.flink.runtime.checkpoint.CheckpointCoordinatorТриггерит checkpoints, собирает acks от TM, сохраняет CompletedCheckpoint metadata.
org.apache.flink.streaming.runtime.io.checkpointing.CheckpointBarrierHandlerНа стороне Task-а: ловит barriers, делает alignment, инициирует snapshot.
org.apache.flink.contrib.streaming.state.RocksDBKeyedStateBackendRocksDB-backed state: ColumnFamily на каждый state name, async snapshot pipeline.
org.apache.flink.runtime.io.network.NetworkEnvironmentЦентральный network компонент TM: владеет BufferPools, SubpartitionViews.
org.apache.flink.runtime.io.network.partition.consumer.RemoteInputChannelОдин RemoteInputChannel = одно subpartition, потребляемое через сеть. Credit-based flow control живёт здесь.
org.apache.flink.streaming.api.operators.AbstractStreamOperatorБазовый класс всех stream-операторов. processElement(), processWatermark(), snapshotState() здесь.
org.apache.flink.table.planner.delegation.PlannerBaseCalcite-based planner для Table/SQL API. Сюда уходит ваш SELECT.

В каждом deep-уроке курс будет указывать конкретный класс и часто конкретный метод (например, CheckpointCoordinator#triggerCheckpoint). Откройте, прочитайте, поймите.

Когда курс не нужен

Будем честны. Если вы:

  • Только начинаете изучать Flink -> пройдите basic-курс сначала.
  • Используете Flink только через managed-сервис (Confluent Flink, Aiven, AWS Managed Flink) и не планируете тюнить — большая часть курса вам не нужна. Достаточно концепций (модули 01-02) и того, что специфично managed (для exactly-once, для savepoint).
  • Архитектор, который выбирает между Flink и альтернативами — модули 00-02 + 05-06 дадут материал для решения, остального не нужно.
  • Студент, который пишет research-проект на Flink — курс полезен, но интенсивность senior-уровня может быть фрустрирующей. Идите медленно, не пытайтесь “выучить за неделю”.
TIP

Курс длинный — это не недостаток, а особенность. Чтобы стать senior-инженером по Flink internals, требуется время и накопление контекста. Не торопитесь. Один-два модуля в неделю с lab-ами — нормальный темп.

Следующий шаг

В следующем уроке — tour по source code Flink: как разложен monorepo Apache Flink, какие модули важны, что такое FLIP (Flink Improvement Proposal) и как читать FLIP-ы для понимания design decisions.

После этого начинается модуль 01 (философия), и оттуда — фундаментальный блок.

Проверка знанийKnowledge check
Вам нужно за неделю подготовиться к интервью на роль "Senior Streaming Data Engineer" в компании, которая использует Flink SQL поверх Iceberg+Kafka. Какие 5 модулей курса максимально приоритетны для вас?
ОтветAnswer
Модуль 02 (Архитектура) — без понимания JM/TM/slots никакая дискуссия в интервью не пойдёт. Модуль 06 (Checkpoint) — это будет тема номер один на любом Flink интервью. Модуль 09 (Calcite SQL planning) — поскольку компания использует SQL, это must-have для технических вопросов о EXPLAIN PLAN и оптимизациях. Модуль 12 (Exactly-once) — критично для Kafka+Iceberg сценария, понимание 2PC protocol будет проверяться. Модуль 14 (Lakehouse: Paimon/Fluss) — Iceberg ментально похож на Paimon, понимание stream-lakehouse direction даст глубину ответов. Опционально шестой — модуль 05 (State backends) — потому что любой вопрос про "как тюнить RocksDB?" должен иметь конкретный технический ответ. Это даст вам ~35 часов фокусированного reading + lab-практики за неделю — интенсивно, но реалистично.

Проверьте понимание

Результат: 0 из 0
Прикладной
Вопрос 1 из 3. Какие модули курса считаются 'killer modules' с extra-глубиной, без которых невозможно ни тюнить, ни дебажить production?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 3