GeminiStateBackend是一款面向Realtime Compute情境的KV儲存引擎,作為Realtime ComputeFlink版產品的預設狀態儲存後端(StateBackend)。本文為您介紹企業級狀態後端儲存GeminiStateBackend的核心設計,以及其與RocksDBStateBackend的效能對比情況。
整體介紹
有狀態計算是流處理中非常複雜和有挑戰的情境。流處理的資料訪問具有以下特點:
存在大量的隨機訪問且很少有範圍查詢。
資料流量和熱點會更加頻繁地動態變化,使得即便是同一運算元的不同並發,也會有不同的資料訪問模式。
GeminiStateBackend就是針對以上特點設計的,其核心設計亮點如下:
全新的架構和資料結構設計,全面的效能提升。
GeminiStateBackend的整體架構是在LSM資料結構的基礎上設計的,包含了隨資料規模和訪問特點變化而自適應、資料冷熱分層,可以在Anti-caching和Caching架構間靈活切換的三種能力。此外,還具備隨機查詢友好的雜湊儲存結構。Nexmark效能對比的結果顯示,GeminiStateBackend相比RocksDBStateBackend的效能有了較大的提升,其中約一半用例的效能領先RocksDB 70%以上。
支援儲存計算分離,徹底擺脫狀態資料的本地碟儲存限制。
在本地碟空間限制的環境下,State較大的作業經常會遇到本地磁碟空間不足的問題。基於RocksDBStateBackend的作業通常需要通過擴並發等增加資源的手段來解決該問題。GeminiStateBackend具有儲存計算分離的技術,使得狀態儲存可以不依賴於本地碟,可以避免因本地狀態資料過大而引發作業故障的問題。有關儲存計算分離相關配置,請參見存算分離配置。
支援自適應KV分離,大幅提升雙流或多流Join作業的效能。
雙流或多流Join作為Realtime Compute中最有挑戰的情境之一,也是狀態儲存會遇到瓶頸的一個典型情境。基於大量情境Join成功率較低、或者狀態資料值較長的特點,GeminiStateBackend推出KV分離技術,可以極大提升雙流或多流Join作業的效能,且該功能可以完全自適應調整,不需要您額外配置調優。經過阿里巴巴集團雙十一核心業務驗證,開啟KV分離後,作業吞吐能力可以提升50% ~ 70%以上,計算資源使用率平均可以提升50%,典型優勢情境下可以提升100% ~ 200%。有關KV分離相關配置,請參見KV分離配置。
輕量級作業快照,顯著加速大狀態作業檢查點和快照完成。
GeminiStateBackend通過支援更細粒度的作業快照,同時解耦檢查點與LSM的Compaction機制,讓檢查點和快照變得更加穩定快速。此外,GeminiStateBackend通過支援Native Incremental Savepoint,結合Realtime Compute產品提供的原生快照,讓其效能趨近檢查點,極大提高了快照的可用性。
自適應參數調優,告別手動調參煩惱。
在Realtime Compute任務中,不同運算元往往具有不同的狀態訪問模式。狀態儲存通常需要不同的參數組合才可以達到最佳的效能,而這些參數往往很多而且涉及底層細節,手動調參會給您帶來較高的學習和理解成本。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% |
相關文檔
如何建立、查看、刪除狀態集和從指定狀態恢複,請參見作業狀態集管理。
RocksDB和Gemini在狀態資料移轉時的遷移效率和作業表現方面的區別,請參見概述。
SQL修改所造成的相容性影響詳情,請參見SQL修改及相容性。
使用Nexmark測試Realtime ComputeFlink版效能過程,請參見效能白皮書(Nexmark效能測試)。
Realtime ComputeFlink版系統檢查點或作業快照相關的常見問題,請參見系統檢查點或作業快照。