我是 Flink 流媒体的初学者。我正在查看每秒大约 5000 个传入的处理事件,并且需要查找过去 3 天的事件窗口。我的问题是:Flink 将 Window 数据存储在哪里?我会受到内存大小的限制吗?以每秒 5000 个字节和每个事件 2000 字节的速度,我正在考虑三天窗口的非常大的存储需求。
Flink 提供了很多关于存储临时"3 天窗口数据"(通常称为"窗口状态"(的选项。默认情况下,它存储在内存中(受 JobManager 内存的限制(,但正如您提到的,它可以根据窗口的大小快速增长。因此,Flink 支持保存 状态到磁盘的副本(快照(,此过程称为检查点。要实现这一点,你应该配置一个状态后端,例如 RocksDB。
更多关于这个:
[1] https://ci.apache.org/projects/flink/flink-docs-master/dev/stream/state/
[2] https://ci.apache.org/projects/flink/flink-docs-master/dev/stream/state/checkpointing.html
[3] https://ci.apache.org/projects/flink/flink-docs-master/ops/state/state_backends.html#the-memorystatebackend