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.