千家信息网

Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天就跟大家聊聊有关Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。摘要
千家信息网最后更新 2026年11月03日Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的

今天就跟大家聊聊有关Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

摘要:我们将对 RocksDB、Heap 和 Gemini 在相同场景下进行压测,并对其资源消耗进行对比。测试的 Flink 内核版本为 1.10.0。

微博机器学习平台使用 Flink 实现多流 join 来生成在线机器学习需要的样本。时间窗口内的数据会被缓存到 state 里,且 state 访问的延迟通常决定了作业的性能。开源 Flink 的状态存储主要包括 RocksDB 和 Heap 两种,而在去年的 Flink Forward 大会上我们了解到阿里云 VVP 产品自研了一款更高性能的状态存储插件 Gemini,并对其进行了测试和试用。

测试场景


我们使用真实的样本拼接业务作为测试场景,通过将多个流的数据union后对指定key做聚合(keyby),在聚合函数里从各个流中获取相应的字段,并将需要的字段重新组合成一个新的对象存储到 value state 里。这里对每个新的对象都定义一个 timer,用 timer 功能来替代 TimeWindow,窗口结束时将数据发射到下游算子。使用 timer 功能的主要原因是 timer 更灵活,更方便用户自定义,在平台的实用性,可扩展性上表现更好。
MemoryStateBackend vs. RocksDBStateBackend

首先需要说明的是,MemoryStateBackend 不建议在线上使用,这里主要是通过测试量化一下使用 Heap 存储 state 的资源消耗。
我们在测试中对 checkpoint 的配置如下:

CheckpointInterval:10分钟CheckpointingMode: EXACTLY_ONCECheckpointTimeout:3分钟

同时对 RocksDB 增加了如下配置:

setCompressionType:LZ4_COMPRESSIONsetTargetFileSizeBase:128 * 1024 * 1024setMinWriteBufferNumberToMerge:3setMaxWriteBufferNumber:4setWriteBufferSize:1GsetBlockCacheSize:10GsetBlockSize:4 * 1024setFilter:BloomFilter(10, false)

测试发现,相同作业处理相同的数据量时,使用 MemoryStateBackend 的作业吞吐和 RocksDB 类似(输入 qps 为 30 万,聚合后输出 qps 为 2 万),但所需要的内存(taskmanager.heap.mb)是 RocksDB 的 8 倍,对应的机器资源是 RocksDB 的 2 倍。


由此我们得出以下结论:

  • 使用 MemoryStateBackend 需要增加非常多的 Heap 空间用于存储窗口内的状态数据(样本),相对于把数据放到磁盘的优点是处理性能非常好,但缺点很明显:由于 Java 对象在内存的存储效率不高,GB 级别的内存只能存储百兆级别的真实物理数据,所以会有很大的内存开销,且 JVM 大堆 GC 停机时间相对较高,影响作业整体稳定,另外遇到热点事件会有 OOM 风险。

  • 使用 RocksDB 则需要较少的 Heap 空间即可,加大 Native 区域用于读缓存,结合 RocksDB 的高效磁盘读写策略仍然有很好的性能表现。

GeminiStateBackend vs. RocksDBStateBackend

可以通过如下方式,在 Ververica Platform 产品中指定使用 Gemini state backend:

state.backend=org.apache.flink.runtime.state.gemini.GeminiStateBackendFactory

同时我们对 Gemini 进行了如下基础配置:

// 指定Gemini存储时的本地目录kubernetes.taskmanager.replace-with-subdirs.conf-keys= state.backend.gemini.local.dirstate.backend.gemini.local.dir=/mnt/disk3/state,/mnt/disk5/state// 指定Gemini的page压缩格式(page是Gemini存储的最小物理单元)state.backend.gemini.compression.in.page=Lz4// 指定Gemini允许使用的内存占比state.backend.gemini.heap.rate=0.7// 指定Gemini的单个存储文件大小state.backend.gemini.log.structure.file.size=134217728// 指定Gemini的工作线程数state.backend.gemini.region.thread.num=8

机器配置



作业使用资源对应参数




内存相关参数



对比结果



Note:全量的样本拼接负载使用 16 台机器无法完全服务,因此我们通过对数据进行不同比例的抽样来进行压测。当出现反压时,我们认为作业已经达到性能瓶颈。

由以上对比可以看出,在数据、作业处理逻辑、硬件配置等都相同的前提下,使用 Gemini 成功处理的数据量是 RocksDB 的 2.4 倍(17280 vs 7200 条/s)。同时通过硬件资源消耗的对比可知,RocksDB 更快达到磁盘 IO 瓶颈,而 Gemini 则具备更高的内存和 CPU 利用率。

看完上述内容,你们对Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

数据 存储 内存 作业 测试 性能 机器 资源 配置 相同 样本 处理 内容 同时 场景 对象 状态 磁盘 消耗 分析 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重庆互联网络科技 金融科技与互联网金融 互联网金融 金融科技 上海致骋互联网科技 一五八零互联网科技 卓越科技互联网 招聘 科技大学互联网专业好不好 北京华百购互联网科技有限公司 互联网对科技的发展 南平创想时代互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 互联网科技和信息 中国互联网十大科技股排名 山东星卡互联网科技有限公司官网 上海钢联属于互联网科技股吗 21世纪互联网科技成就 宇信科技在杭州互联网排第几 科技信息时代互联网发展 互联网对科技影响 互联网科技创业有什么好项目 广州为想互联网科技有限公司 致骋互联网科技 碳银互联网科技 互联网科技小额贷款 卫星互联网科技股票 互联网科技革命什么开始 移动互联网科技公司 辽宁互联网新科技 互联网科技大赛获奖感言 互联网科技企业商标注意事项
0