Flink中的State概念及其扩容算法 state是什么意思( 二 )


恢复状态的方式与源中操作者状态的存储结构有着必然的关系 。让我们首先看看MetaQSource的实现是如何存储状态的 。首先,MetaQSource实现ListCheckpointed,其中t是Tuple2 。我们看列表检查点接口的内部定义如下:
public interface ListCheckpointed { &创业网nbsp;List snapsh创业网otState(long var1, long var3) throws Exception;void restoreState(List var1) throws Exception;}我们发现snapshotState方法的返回值是一个list,t是Tuple2,也就是说snapshotState方法返回一个List 。该类型表示状态的存储是包含分区和偏移量信息的列表,InputSplit表示分区,Long表示当前分区读取的偏移量 。InputSplit有一种方法如下:
public interface InputS创业网plit extends Serializable {int getSplitNumber();}也就是说,InputSplit可以理解为一个分区索引 。有了这个数据结构,我们来看看上图所示的案例是如何工作的 。当Source的并行度为1时,所有分区数据都在同一个线程中读取,所有分区的状态也保持在同一状态 。状态存储信息的格式如下:

Flink中的State概念及其扩容算法 state是什么意思

文章插图

推荐阅读