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是什么意思

文章插圖

推薦閱讀