我需要能够从地图状态中删除比固定时间还旧的旧键。我目前将每个事件的时间戳记保存在键状态图中,并且我希望有一个异步过程来删除这些陈旧的键。
我使用RocksDB作为国家后台,我不认为RocksDB的Java API的支持与TTL开放作为注意到这里。
所以我的问题是:
提前致谢,
在阅读了flink文档之后(下面提到的相关部分)我仍然没有完全理解原子性和密钥分布。
\n\n即考虑一个由 keyby->flatmap(包含映射状态)组成的图,并行度设置为 1,有 4 个任务槽,flink 是否确保每个键在分布式环境中只存在一次(在一个任务槽中),是吗?原子单位?\n提前感谢所有帮助者。
\n\n\n\n您可以将键控状态视为已分区或分片的操作员状态,每个键只有一个状态分区。每个键控状态在逻辑上都绑定到 的唯一组合
\n\n<parallel-operator-instance, key>
,并且由于每个键 \xe2\x80\x9c 都属于\xe2\x80\x9d 恰好是键控运算符的一个并行实例,因此我们可以将其简单地视为<operator, key>
。键控状态进一步组织成所谓的键组。Key Groups 是 Flink 可以重新分配 Keyed State 的原子单元;关键组的数量与定义的最大并行度完全相同。在执行期间,键控运算符的每个并行实例都使用一个或多个键组的键。
\n
apache-flink ×2