Эволюционирующий TTL в дорожной карте?

#apache-flink #flink-streaming

#apache-flink #flink-потоковая передача

Вопрос:

В версии Flink 1.8 появилась поддержка эволюционирующей схемы состояний. Мой вопрос в том, введет ли Flink поддержку эволюционирующего времени жизни (TTL) в состояние. Прямо сейчас вы не можете добавить TTL в существующее состояние, не настроенное с помощью TTL, и ожидать, что сможете восстановить состояние. Мне любопытно, намерен ли Flink использовать эту возможность в будущем? Единственное возможное решение, которое я вижу сейчас, — это включить TTL во всех моих состояниях, а затем просто установить срок действия так, чтобы было что-то невероятно высокое, что дает мне гибкость для использования функций TTL позже, если я все еще заинтересован в этом. Конечно, с истечением срока действия, основанным на значимой бизнес-логике, а не просто на каком-то чрезвычайно большом числе.

Время жить Источник: https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/state.html#state-time-to-live-ttl

Эволюционирующая схема состояний Источник: https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/schema_evolution.html

Ответ №1:

Я не могу вспомнить ни одного обсуждения этого в списках рассылки, и я не могу найти никаких заявок на JIRA по этой теме.

Предложенный вами обходной путь не идеален, потому что вы будете платить за TTL состояния (как пространство для таймеров, так и затраты на обработку проверки состояния с истекшим сроком действия) с небольшой выгодой.

Вместо этого вы могли бы использовать State Processor API для переноса ваших данных в новые дескрипторы состояний. Вы бы использовали существующий дескриптор состояния для чтения данных из моментального снимка состояния (точки сохранения или контрольной точки), а затем использовали обновленный дескриптор состояния для записи состояния в новую точку сохранения.