Flink源码解析之State的实现

State的实现

Flink通过异步的checkpoint机制来实现流式处理过程中的容错,简单来讲就是定时地将本地的状态序列化到一个持久存储中,当出现错误是通过恢复检查点的状态来实现容错的,对于机制的详细介绍可以参见这个链接,本章主要讲述flink源码中state的实现。

StateBackend

flink将我们代码中的操作转化为一个个的task放在taskmanager中执行。其中每个task一个线程,每个task中包含了一个AbstractInvokable对象,task中的主要的逻辑就是调用AbstractInvokable.invoke()的方法。在流式处理中对应的实现都是继承自StreamTaskStreamTask中包含一个OperatorChain,并规定了一些hook函数来定义生命周期。AbstractStateBackend就是在这里进行初始化的。Flink的实现一共提供了3种state backend:MemoryStateBackend,FsStateBackend, 和RocksDBStateBackend。其中MemoryStateBackend主要用于调试开发中使用,后面2者适合于生产环境中使用。这三种实现均继承自AbstractStateBackend类。在StreamTask的初始化过程中会初始化OperatorChain中所有的operator,而AbstractKeyedBackend也是在这个过程中初始化的࿰

你可能感兴趣的:(flink,flink,源码)