聊聊遊戲業務怎麼用高斯Redis

語言: CN / TW / HK
摘要:其實遊戲客户對數據庫的訴求是很明確的,數據庫應當“放心存放心用”。

本文分享自華為雲社區《華為雲GaussDB(for Redis)揭祕第27期:聊聊遊戲業務怎麼用高斯Redis》,作者:高斯Redis官方博客。

華為雲數據庫團隊是比較重視技術洞察的,對客户真實的業務場景也比較看重。年初出差了幾次遊戲客户現場,有幸跟客户的業務開發和運維聊了聊,發現遊戲對Redis的應用其實很多。不過一般都會對自建的開源Redis吐槽比較多,其實也都是常見問題了,例如:

痛點1:開源Redis全部數據放內存,存不下全量玩家,有成本瓶頸

像玩家裝備、福利活動領取記錄、朋友圈發帖等等,這類數據其實很適合用NoSQL數據庫存儲,擴展性好,性能高。但開源Redis將全量數據加載進內存,等到後期玩家持續上量後,成本扛不住,導致騎虎難下。

痛點2:全局大key會導致分片數據傾斜,動不動OOM

全局排行榜、發券搶券都難免會有些使用大Key的場景,這時雖然開源Redis的性能沒啥問題,但由於Redis集羣中每個分片能“裝”的數據很少,如果個別Key太大,就很容易會導致數據傾斜,有些分片會經常發生OOM,影響業務

痛點3:擴容慢,對業務影響大

遊戲開服、節假日活動,都需要預置充足資源。開源Redis做擴容會是個麻煩事,由於要跨分片做數據的拷貝,因此往往動輒半小時以上,而且考慮到對業務的影響,客户只能在半夜實施擴容。

其實,此類問題已經存在很多年了,業界是有一些解法的。比如用SSD替代內存的自建KV存儲方案,或者AWS那種比較先進的MemoryDB數據庫服務,都能或多或少解決一些開源Redis的使用痛點。

針對這類遊戲場景,華為雲也提供一款足夠靠譜的雲數據庫:GaussDB(for Redis)。

GaussDB(for Redis)是華為雲數據庫團隊在吸取了開源Redis的經驗教訓後,自主研發的KV數據庫,兼容開源Redis協議,採用存算分離的架構,提供了很多好用的企業級特性。針對幾種常見的遊戲業務痛點,展開來説:

企業級特性1:採用內存+NVMe的存儲方案,自動冷熱交換,實現有效降本30%+

使用Redis的場景必然需要數據庫能提供高性能、低時延的有力支撐。GaussDB(for Redis)除了將全量數據落盤到NVMe存儲池外,還支持緩存高頻訪問的熱數據存在內存中,內部自動完成冷熱數據交換,通過LRU算法淘汰冷數據,業務能優先從內存中讀取熱數據,最終端到端達成業務對高併發和低時延的訴求。

同時,GaussDB(for Redis)分佈式NVMe存儲池具有高壓縮比。根據實際業務測試,string、hash等常用數據類型在GaussDB(for Redis)實際存儲空間佔用僅為開源Redis的70%~85%。GaussDB(for Redis)最多可支撐36TB數據存儲,數據量越多,相比開源Redis的成本越低。

企業級特性2:存儲池統一管理全量Key,不會發生數據傾斜,極少OOM,更穩定

開源Redis存儲大key會導致分片內存消耗不均,隨着集羣整體數據量水位提升,大key所在分片隨時有OOM風險。在擴容和刪除大key時,業務訪問會被阻塞甚至數據丟失。

GaussDB(for Redis)支持大key可靠存儲,且不會導致分片OOM。另外,在GaussDB(for Redis)的控制枱WebClient可以輕鬆一鍵進行“大Key診斷”,隨時都能掌握業務使用的大Key情況。

企業級特性3:真正的秒級彈性伸縮,運營節日活動更輕鬆

開源Redis擴縮容涉及數據的拷貝遷移,速度慢,業務中斷時間長。業務在流量突增的場景,需要緊急快速擴容,否則會影響用户體驗,甚至給客户帶來經濟損失。

GaussDB(for Redis)採用存算分離的架構,擴容不需要遷移存儲池中的數據,只需將數據分片信息均衡到新增加的計算節點上即可,不涉及遷移數據,可以秒級完成,對業務影響小

總結

其實遊戲客户對數據庫的訴求是很明確的,數據庫應當“放心存放心用”。GaussDB(for Redis)是一款超越開源Redis的企業級KV數據庫,既能滿足遊戲業務對高併發的性能指標要求,且能有效降本增效。後續還會給大家聊聊GaussDB(for Redis)針對其他業務場景的痛點退出的企業級特性,盡請期待。

 

點擊關注,第一時間瞭解華為雲新鮮技術~