为什么flink operator state在官方文档示例中与heap object一起使用

Why flink operator state is used together with heap object in official doc examples

我正在阅读 https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/fault-tolerance/state/#operator-state 上的文档。

在classBufferingSink的例子中,checkpointedStatebufferedElements一起使用。 为什么不直接使用 checkpointedState 来缓冲新对象并在 invoke 函数中清除?

这只是一个插图或与性能相关的做法吗?

不建议使用state作为存储,checkpointedState只会在快照阶段写入statebackend

或许你可以先参考下面的link了解checkpoint的基本流程https://nightlies.apache.org/flink/flink-docs-master/docs/concepts/stateful-stream-processing/

我认为在这种情况下做出选择是出于性能原因。偶尔制作一个副本(在检查点期间)比为列表中的每个操作经历 ListState 对象的开销要便宜。