本文为您整体介绍企业级状态后端存储GeminiStateBackend,以及其与RocksDBStateBackend的性能对比情况。
整体介绍
- 存在大量的随机访问且很少有范围查询。
- 数据流量和热点会更加频繁地动态变化,使得即便是同一算子的不同并发,也会有不同的数据访问模式。
- 全新的架构和数据结构设计,全面的性能提升。
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性能对比
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% |