---
title: OmniRuntime OmniStateStore状态优化
description: "Apache Flink是一个开源的流处理框架，用于实时数据流的处理和分析。它能够处理无界（unbounded）和有界（bounded）的数据流，并且提供了丰富的API来支持各种复杂的流处理场景。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/twp/kunpengbds_19_0043.html
sourcePath: /source/zh/kunpengbds/twp/kunpengbds_19_0043.html
indexId: cf169be2c852c3ee84a02eb03a7926fe0fe06fd26d3746880fa1f0e8f265281b49
---
# 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操作。
- LZ4软算压缩优化：将RocksDB Level0/Level1的压缩格式修改为LZ4，结合LZ4软算压缩算法优化，提升状态压缩/解压缩效率。

图1 OmniStateStore状态优化整体架构设计


#### 典型部署配置

OmniStateStore状态优化作为Flink的插件，其部署方式与Flink部署方式保持一致。Flink支持Yarn、Standalone及容器化等多种部署模式。

典型部署场景在3个Docker容器内，容器配置均为8核、32GB内存，其中一个容器中部署Job Manager，另外两个容器中各部署4个Task Manager。Job Manager分配8GB内存，单个Task Manager分配2个task slot、8GB内存。
