KeeWiDB:兼容Redis協議,領跑NoSQL
如果現在的我們離開了互聯網,生活會是什麼樣子?
互聯網++++,已經深刻滲透到人們的生活中。
不知道大家有沒有想過?每一個互聯網+結合的背後都是海量的存儲需求。你查看的每一個商品、組建的每一個戰隊、閱讀的每一篇文章,基於互聯網的每一個興趣愛好,都有它的key和value。
在 key-value 資料庫領域,Redis 因其高吞吐、低延遲、豐富的數據結構一直受開發者歡迎,但 Redis 全記憶體方案無法解決海量數據所帶來的規模與成本問題,數據可靠性也面臨挑戰。
目前業界也有很多基於磁碟的鍵值存儲方案,比如RocksDB、SSDB等。這些存儲引擎設計之初是為了發揮磁碟的極致性能,很難在命中記憶體訪問的時候提供Redis級的吞吐;同時磁碟本身的延遲遠遠高於記憶體,吞吐也是有限的。
講道理,我們的市場需要一款產品既要保證用戶的極致體驗,又要確保海量數據的高可靠,還要儘可能低的成本。
怎麼辦呢?這裡為大家介紹我們的新朋友:KeeWiDB,它可以給開發者提供一個高可靠、高效率、低成本的鍵值資料庫解決方案。
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,有多強?
寫入即存儲
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 可以輕鬆突破記憶體容量限制,並且大幅降低業務成本。在正常業務請求中,活躍的商品數據會從持久記憶體中讀取,而不活躍的商品數據將從磁碟讀取。KeeWiDB 新一代存儲引擎帶來更強勁的讀取能力,單節點最大支援 28W + QPS、P99 延遲小於 2ms,輕鬆應對百萬請求。在電商活動期間,可通過快取資源的無損擴縮容,快速支撐陡增的性能需求。
遊戲全服務
遊戲業務包括登陸服務、匹配服務、組隊服務、戰隊服務、社交服務等,需要存儲不同的數據結構,比如 Hash 存儲玩家資訊、Zset 存儲排行榜。KeeWiDB 兼容 Redis 的數據結構,對開發者非常友好,同時可將在線活躍的玩家數據持續快取,未登錄的玩家數據落冷至磁碟,玩家上線後數據自動快取,從而大幅降低成本,保證熱數據的極致性能,無需在業務側處理快取和存儲交換的邏輯,可極大提升開發效率。
新聞/內容平台
隨著業務運營時間越來越長,內容數據在業務穩定後會有線性的增長,而客戶訪問的內容以近期、熱點數據為主,所以熱數據的容量比較穩定,冷數據會不斷增大。KeeWiDB 可替換類似 Redis + MySQL 的快取加存儲方案,一體化的快取+存儲架構設計,解決快取一致性問題的同時,提升業務開發效率,降低存儲成本。
畫像/推薦業務
當前互聯網公司的核心資產是用戶,基於用戶行為的畫像和推薦系統也成為互聯網的基礎設施,畫像、特徵、embedding 給企業帶來了海量的 KV 存儲需求,請求以點讀和批量導入為主。KeeWiDB 通過冷熱分級存儲提供大容量、低成本的 KV 存儲能力;通過命令級持久化,實現高速寫入,縮短批量導入的窗口時間;通過分散式架構,能夠提供百TB 的存儲規模。
也說了不少了,大家應該對新朋友 KeeWiDB 有了一定的認識。
想詳細了解 KeeWiDB 的高性能之路?且聽下回分解。
騰訊雲資料庫一直致力於非關係型資料庫產品的研發和投入,目前已經涵蓋了包括快取、文檔、時序、KV在內的七款資料庫產品,並且在持續豐富資料庫服務的種類。目前,騰訊雲 NoSQL 資料庫服務了金融、電商、遊戲、影片等數十個行業應用場景。