Apache flink 在Apache Flink中使用状态是否有限制?

Apache flink 在Apache Flink中使用状态是否有限制?,apache-flink,Apache Flink,ApacheFlink允许我在RichMapFunction中使用状态。我计划建立一个连续运行的工作,分析一个网络事件流。处理的一部分将是创建一个会话上下文,其中包含会话范围的度量(如会话的第n个、持续时间等),另外还有一个用户上下文 会话上下文将在30分钟后超时,但用户上下文可能存在一年以处理返回的用户 将会有数以百万计的会话和用户,所以我最终会在数以百万计的州结束。每个州的大小只有几KB 这是弗林克州可以妥善处理的事情吗 Flink实际上是如何清理弃用状态的 考虑提供一个自定义后端来将状态

ApacheFlink允许我在RichMapFunction中使用状态。我计划建立一个连续运行的工作,分析一个网络事件流。处理的一部分将是创建一个会话上下文,其中包含会话范围的度量(如会话的第n个、持续时间等),另外还有一个用户上下文

会话上下文将在30分钟后超时,但用户上下文可能存在一年以处理返回的用户

将会有数以百万计的会话和用户,所以我最终会在数以百万计的州结束。每个州的大小只有几KB

  • 这是弗林克州可以妥善处理的事情吗
  • Flink实际上是如何清理弃用状态的
  • 考虑提供一个自定义后端来将状态存储在KV集群中是否有意义

对于大型州,我建议使用Flink的
RocksDBStateBend
。此状态后端使用RocksDB存储状态。由于RocksDB会优雅地溢出到磁盘,因此它仅受可用磁盘空间的限制。因此,Flink应该能够处理您的用例

此时,您需要注册计时器以清除状态。然而,随着Flink的下一次发布,社区将添加。这将在过期时自动清除您的状态


通过保持定期检查点,使您的状态接近您的计算,这将使您的应用程序保持快速。如果每个州都访问远程KV集群,这将大大降低处理速度。

对于大型州,我建议使用Flink的
RocksDBStateBend
。此状态后端使用RocksDB存储状态。由于RocksDB会优雅地溢出到磁盘,因此它仅受可用磁盘空间的限制。因此,Flink应该能够处理您的用例

此时,您需要注册计时器以清除状态。然而,随着Flink的下一次发布,社区将添加。这将在过期时自动清除您的状态

通过保持定期检查点,使您的状态接近您的计算,这将使您的应用程序保持快速。如果每个州都访问一个远程KV集群,这将大大降低处理速度