如果現在的我們離開了網際網路,生活會是什麼樣子?
網際網路++++,已經深刻滲透到人們的生活中。
不知道大家有沒有想過?每一個網際網路+結合的背後都是海量的儲存需求。你檢視的每一個商品、組建的每一個戰隊、閱讀的每一篇文章,基於網際網路的每一個興趣愛好,都有它的key和value。
在 key-value 資料庫領域,Redis 因其高吞吐、低延遲、豐富的資料結構一直受開發者歡迎,但 Redis 全記憶體方案無法解決海量資料所帶來的規模與成本問題,資料可靠性也面臨挑戰。
目前業界也有很多基於磁碟的鍵值儲存方案,比如RocksDB、SSDB等。這些儲存引擎設計之初是為了發揮磁碟的極致效能,很難在命中記憶體存取的時候提供Redis級的吞吐;同時磁碟本身的延遲遠遠高於記憶體,吞吐也是有限的。
講道理,我們的市場需要一款產品既要保證使用者的極致體驗,又要確保海量資料的高可靠,還要儘可能低的成本。
怎麼辦呢?這裡為大家介紹我們的新朋友:KeeWiDB,它可以給開發者提供一個高可靠、高效率、低成本的鍵值資料庫解決方案。
KeeWiDB 是騰訊雲資料庫團隊推出的新一代分散式KV儲存資料庫,相容 Redis 協定和資料結構,上手門檻低(開發者狂喜)。
也就是說,Redis 有的它都有!它有的,就是它才有。那 KeeWiDB 有什麼呢?
它可以,通過 WAL 機制支援資料的高速持久化,實現寫入即儲存;通過記憶體和持久記憶體提供熱資料的極致讀寫效能,NVMe SSD磁碟提供大容量、低成本的儲存能力,實現資料的冷熱分級,優化儲存成本。
總的來說,KeeWiDB 擁有前瞻的架構設計、行業領先的效能表現,可助力企業提升生產效率、降低運營成本。
接下來展開說說什麼是前瞻的架構設計。
圖:KeeWiDB總體架構圖
proxy:相容主從版、叢集版使用者端,使用者端請求通過 proxy 實現智慧路由和結果聚合;同時,proxy 還提供了流量控制和請求統計等功能。
叢集設計:通過改進原生 Redis 的 gossip 方案,KeeWiDB 可有效降低在大叢集場景下gossip 本身的流量消耗。資料 sharding 則採用 Redis 叢集版策略,將所有 key 劃分為16384個 slot,每個 shard 服務若干個 slot,key通過crc16(key) % 16384來獲得 slot,再根據slot資訊路由到對應節點。
分級儲存:創新性地提供記憶體(DRAM),持久記憶體(PMEM),固態硬碟(SSD)分級儲存解決方案,根據資料存取熱度自動分級,將不同存取密度的資料儲存到不同成本的媒介中,有效實現了效能和成本的平衡。
圖:KeeWiDB分級儲存架構
在該架構中,DRAM 主要儲存少量高速索引,如果查詢操作直接命中高速索引,則可以直接定位到 value 的位置,最多僅需要一次 IO。
為了降低記憶體消耗,DRAM 層不儲存 key,只儲存 hashcode,這樣可把 key 大小和索引容量解耦。舉個例子,假設一個索引佔用記憶體 hashcode(4) + posinfo(6),共計 10 個位元組,100w key索引僅需要佔用 10MB 記憶體。
假如快取記憶體未命中,則需要通過 PMEM 來做查詢,PMEM 的讀取速度還是比較快的,假設按照 DRAM 100ns計算, PMEM可達到 1000ns。KeeWiDB 通過常規的 clock-sweep 演演算法淘汰不常存取的冷資料到 SSD,PMEM 儲存的則是熱資料,如果存取的是key 命中,效能將大幅提升。
如果命中的是冷資料,則需要到磁碟(SSD)讀取,得益於 SSD 的快速發展,也可實現高效能。目前 KeeWiDB 的裝置上,單盤 4k 隨機讀取 iops 可達到40w+,單盤 4k 隨機寫入也可以達到 15w+。因此實際使用中,特別是在主要讀的場景下,即使PMEM和資料的比例達到 1:10,依然可以獲得不錯的效能。
寫入即儲存
KeeWiDB 採用WAL(預寫紀錄檔)持久機制,保障資料的原子性和永續性。紀錄檔內容會持久化到 PMEM 層,後臺進行資料非同步落盤,在保證資料實時持久化的同時實現資料的高速、低延遲寫入。
極致效能
KeeWiDB 為 KV 場景客製化了新一代儲存引擎,大部分資料組織都是採用Hash的存取方式,同時與持久記憶體(PMEM)耦合,單節點最大效能可達到18萬寫入、28萬讀取,P99延遲小於2ms,同時可水平堆疊,效能線性提升。
分級儲存
基於記憶體(DRAM)+持久記憶體(PMEM)+NVMe SSD磁碟搭建分級儲存架構,由持久記憶體(PMEM)快取存取熱資料,磁碟(SSD)儲存全量資料,持久記憶體和磁碟的容量可靈活設定。同時支援資料的冷熱分離、自動升熱降冷。無需在業務中處理快取和儲存的交換邏輯,可大幅提高版本迭代效率。
大容量低成本
KeeWiDB的原生分散式架構可以提供單範例百TB 級規模;通過持久記憶體(PMEM)和磁碟(SSD)提供更加靈活的儲存方式,在滿足業務效能要求的同時提供低成本方案。
智慧運維
通過智慧proxy和引擎層的多路採集,KeeWiDB 提供豐富的效能、時延、網路、容量、命中率等監控指標,幫助使用者提前預警風險,快速定位和解決問題。
電商場景
電商類應用通常擁有海量的商品資料,使用 KeeWiDB 可以輕鬆突破記憶體容量限制,並且大幅降低業務成本。在正常業務請求中,活躍的商品資料會從持久記憶體中讀取,而不活躍的商品資料將從磁碟讀取。KeeWiDB 新一代儲存引擎帶來更強勁的讀取能力,單節點最大支援 28W + QPS、P99 延遲小於 2ms,輕鬆應對百萬請求。在電商活動期間,可通過快取資源的無失真擴縮容,快速支撐陡增的效能需求。
遊戲全服務
遊戲業務包括登陸服務、匹配服務、組隊服務、戰隊服務、社交服務等,需要儲存不同的資料結構,比如 Hash 儲存玩家資訊、Zset 儲存排行榜。KeeWiDB 相容 Redis 的資料結構,對開發者非常友好,同時可將線上活躍的玩家資料持續快取,未登入的玩家資料落冷至磁碟,玩家上線後資料自動快取,從而大幅降低成本,保證熱資料的極致效能,無需在業務側處理快取和儲存交換的邏輯,可極大提升開發效率。
新聞/內容平臺
隨著業務運營時間越來越長,內容資料在業務穩定後會有線性的增長,而客戶存取的內容以近期、熱點資料為主,所以熱資料的容量比較穩定,冷資料會不斷增大。KeeWiDB 可替換類似 Redis + MySQL 的快取加儲存方案,一體化的快取+儲存架構設計,解決快取一致性問題的同時,提升業務開發效率,降低儲存成本。
畫像/推薦業務
當前網際網路公司的核心資產是使用者,基於使用者行為的畫像和推薦系統也成為網際網路的基礎設施,畫像、特徵、embedding 給企業帶來了海量的 KV 儲存需求,請求以點讀和批次匯入為主。KeeWiDB 通過冷熱分級儲存提供大容量、低成本的 KV 儲存能力;通過命令級持久化,實現高速寫入,縮短批次匯入的視窗時間;通過分散式架構,能夠提供百TB 的儲存規模。
也說了不少了,大家應該對新朋友 KeeWiDB 有了一定的認識。
想詳細瞭解 KeeWiDB 的高效能之路?且聽下回分解。
騰訊雲資料庫一直致力於非關係型資料庫產品的研發和投入,目前已經涵蓋了包括快取、檔案、時序、KV在內的七款資料庫產品,並且在持續豐富資料庫服務的種類。目前,騰訊雲 NoSQL 資料庫服務了金融、電商、遊戲、視訊等數十個行業應用場景。