在路线图上发展TTL?

问题描述

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

解决方法

我想不起来在邮件列表上对此进行的任何讨论,也找不到关于此主题的任何JIRA票证。

您提出的解决方法并不理想,因为您将为状态TTL(包括计时器的空间和检查过期状态的处理工作)付出代价,而收效甚微。

您可能要做的是使用State Processor API将数据迁移到新的状态描述符。您将使用现有的状态描述符从状态快照(保存点或检查点)读取数据,然后使用更新的状态描述符将状态写到新的保存点。