Назад к подготовке

Checkpointing, offsets и partial windows

Stream job считает CTR по окнам и падает посередине часа. Как не потерять данные и не задвоить агрегаты?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

Нужны checkpoint state, контроль Kafka offsets и идемпотентная запись агрегатов по ключу campaign_id + window_start.

Полный разбор

Job должен восстанавливать state окон и offsets из checkpoint. Запись в storage лучше делать идемпотентной: upsert/replace по ключу окна или commit protocol, где offset продвигается только после успешной записи.

Для late events нужны watermark и политика пересчета закрытых окон. Если dashboard показывает partial windows, это должно быть явно видно: иначе пользователь будет интерпретировать недосчитанное окно как падение CTR.