文档

企业级状态后端存储介绍

更新时间:

GeminiStateBackend是一款面向流计算场景的KV存储引擎,作为实时计算Flink版产品的默认状态存储后端(StateBackend)。本文为您介绍企业级状态后端存储GeminiStateBackend的核心设计,以及其与RocksDBStateBackend的性能对比情况。

整体介绍

有状态计算是流处理中非常复杂和有挑战的场景。流处理的数据访问具有以下特点:

  • 存在大量的随机访问且很少有范围查询。

  • 数据流量和热点会更加频繁地动态变化,使得即便是同一算子的不同并发,也会有不同的数据访问模式。

GeminiStateBackend就是针对以上特点设计的,其核心设计亮点如下:

  • 全新的架构和数据结构设计,全面的性能提升。

    GeminiStateBackend的整体架构是在LSM数据结构的基础上设计的,包含了随数据规模和访问特点变化而自适应、数据冷热分层,可以在Anti-caching和Caching架构间灵活切换的三种能力。此外,还具备随机查询友好的哈希存储结构。Nexmark性能对比的结果显示,GeminiStateBackend相比RocksDBStateBackend的性能有了较大的提升。

  • 支持存储计算分离,彻底摆脱状态数据的本地盘存储限制。

    在本地盘空间限制的环境下,State较大的作业经常会遇到本地磁盘空间不足的问题。基于RocksDBStateBackend的作业通常需要通过扩并发等增加资源的手段来解决该问题。GeminiStateBackend具有存储计算分离的技术,使得状态存储可以不依赖于本地盘,可以避免因本地状态数据过大而引发作业故障的问题。有关存储计算分离相关配置,请参见存算分离配置

  • 支持KV分离,大幅提升双流或多流Join作业的效能。

    双流或多流Join作为流计算中最有挑战的场景之一,也是状态存储会遇到瓶颈的一个典型场景。GeminiStateBackend基于KV分离技术,极大提升了双流或多流Join作业的效能。经过阿里巴巴集团双十一核心业务验证,开启KV分离后计算资源利用率平均可以提升50%。典型优势场景下可以提升100% ~ 200%。有关KV分离相关配置,请参见KV分离配置

  • 自适应参数调优,告别手动调参烦恼。

    在流计算任务中,不同算子往往具有不同的状态访问模式。状态存储通常需要不同的参数组合才可以达到最佳的性能,而这些参数往往很多而且涉及底层细节,手动调参会给您带来较高的学习和理解成本。GeminiStateBackend通过自适应参数调优技术,在作业运行时根据当前数据访问模式和流量自动调参,以达到各种场景下的最佳性能。经过阿里巴巴集团双十一核心业务验证,该技术可以避免95%以上的人工调参,同时提升10% ~ 40%的单核吞吐能力。有关自适应调参相关配置,请参见自适应调参配置

Nexmark性能对比

我们使用Nexmark中State瓶颈的用例和相同的硬件资源,测试并对比了RocksDBStateBackend和GeminiStateBackend的性能。

说明

Nexmark属于第三方搭建的网站,访问时可能会存在无法打开或访问延迟的问题。

结果显示GeminiStateBackend对作业整体效能(单核吞吐能力)的优化效果十分显著,具体数据如下表所示。

CaseName

Gemini TPS/Core

RocksDB TPS/Core

Gemini VS RocksDB提升

q4

83.63 K/s

53.26 K/s

57.02%

q5

84.52 K/s

57.86 K/s

46.08%

q8

468.96 K/s

361.37 K/s

29.77%

q9

59.42 K/s

26.56 K/s

123.72%

q11

93.08 K/s

48.82 K/s

90.66%

q18

150.93 K/s

87.37 K/s

72.75%

q19

143.46 K/s

58.5 K/s

145.23%

q20

75.69 K/s

22.44 K/s

237.30%

相关文档

  • 本页导读 (1)
文档反馈