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