对于许多状态流式计算程序来说一个常见的需求是自动清理应用程序的状态(state),以便有效地控制状态大小或者控制程序访问状态的有效时间(例如受限于诸如 GDPR 等法律条规)。Apache Flink 自 mon.state.ValueStateDescriptor;
Flink 提供了多个选项来配置状态生存时间:
什么时候重置生存时间? 默认情况下当状态被修改时,生存时间就会被更新我们也可以在读操莋访问状态时更新相关项的生存时间,但这样要花费额外的写操作来更新时间戳
已经过期的数据是否可以访问? 状态生存时间机制使用的昰惰性策略来清除过期状态。这可能导致应用程序会尝试读取过期但尚未删除的状态用户可以配置对这样的读取请求是否返回过期状态。无论哪种情况过期状态都会在之后立即被删除。虽然返回已经过期的状态有利于数据可用性但不返回过期状态更符合相关数据保护法规的要求。
关于状态生存时间的更多信息可以参考 Flink官方文档。