OmniRuntime OmniStateStore状态优化
Apache Flink是一个开源的流处理框架,用于实时数据流的处理和分析。它能够处理无界(unbounded)和有界(bounded)的数据流,并且提供了丰富的API来支持各种复杂的流处理场景。
状态存储(State Store)是Flink的重要组成部分,其主要由状态后端(State Backend)来完成。随着状态(State)中数据量的增大,状态存储性能面临挑战。OmniStateStore状态优化基于Flink提供的状态存储后端插件机制,提供状态存储的加速,从而提升Flink的整体性能。
架构设计
OmniStateStore是对接Flink和RocksDB的中间层,包含动态Filter技术、Flink语义状态缓存和Merge读写优化,其整体架构设计如图1所示:
- 动态Filter技术:使用状态前缀filter,过滤mapState范围查询时的冗余磁盘查找操作;对于仅需要点读、点写的状态,将memTable数据结构替换为HashLinkList, 提升状态点读和点写效率。
- Flink语义状态缓存:通过ValueState状态缓存,同Key状态优先在内存中完成聚合,减少状态对RocksDB的访问频次;通过Join算子数据缓存,减少双流Join操作的状态范围查询次数。
- Merge读写优化:使用RocksDB的Merge接口,替换Flink SQL/DataStream的状态RMW操作。
典型部署配置
OmniStateStore状态优化作为Flink的插件,其部署方式与Flink部署方式保持一致。Flink支持Yarn、Standalone及容器化等多种部署模式。
典型部署场景在3个Docker容器内,容器配置均为8核、32GB内存,其中一个容器中部署Job Manager,另外两个容器中各部署4个Task Manager。Job Manager分配8GB内存,单个Task Manager分配2个task slot、8GB内存。
父主题: 方案特性
