添加RocksDB状态后端相关
This commit is contained in:
parent
2a73aca5c7
commit
57e5042f21
@ -151,8 +151,6 @@ StateBackend实现类图,在1.17版本中,部分状态后端已经过期,
|
||||
|
||||
![pic](https://pan.zeekling.cn//flink/basic/state/StateBackend_0003.png)
|
||||
|
||||
|
||||
|
||||
## HashMapStateBackend
|
||||
|
||||
在TaskManager的内存当中保存作业的状态后端信息,如果一个TaskManager并行执行多个任务时,所有的聚合信息都要保存到当前的TaskManager内存里面。数据主要以Java对象的方式保存在堆内存当中。Key/value 形式的状态和窗口算子会持有一个 hash table,其中存储着状态值、触发器。
|
||||
@ -253,6 +251,51 @@ restoreOperation实现类图如下所示,主要包含如下的实现类。
|
||||
|
||||
|
||||
|
||||
### RocksDBIncrementalRestoreOperation
|
||||
|
||||
主要实现从增量快照中恢复RocksDB数据。核心函数为restore()。主要区分为:
|
||||
|
||||
- restoreWithRescaling:从多个增量的状态后端恢复,需要进行扩缩容。在这个过程中会创建一个临时的RocksDB实例用于关key-groups。临时RocksDB当中的数据在都会复制到实际使用的RocksDB的实例当中。
|
||||
- restoreWithoutRescaling:从单个远程的增量状态后端恢复,无需进行扩缩容。
|
||||
|
||||
````java
|
||||
if (isRescaling) {
|
||||
restoreWithRescaling(restoreStateHandles);
|
||||
} else {
|
||||
restoreWithoutRescaling(theFirstStateHandle);
|
||||
}
|
||||
````
|
||||
|
||||
|
||||
|
||||
#### restoreWithRescaling 实现原理
|
||||
|
||||
1. 选择最优的KeyedStateHandle。
|
||||
2. 初始化RocksDB实例。
|
||||
3. 将key-groups从临时RocksDB转换到Base RocksDB数据库。
|
||||
|
||||
|
||||
|
||||
#### restoreWithoutRescaling 实现原理
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### RocksDBFullRestoreOperation
|
||||
|
||||
|
||||
|
||||
### RocksDBHeapTimersFullRestoreOperation
|
||||
|
||||
|
||||
|
||||
### RocksDBNoneRestoreOperation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## ChangelogStateBackend
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user