什麼數據庫能抗住《王者榮耀》的1億DAU?

11月1日晚,剛過完五週年生日的《王者榮耀》官方宣佈2020年日活躍用戶數1億,成爲國內乃至全球首個日均DAU過億的手遊。與此同時,騰訊雲TcaplusDB做爲《王者榮耀》的數據庫服務產品,成爲全球首款支持過億DAU遊戲的數據庫。算法

image.png

任何一款遊戲的成功都不是偶然的,《王者榮耀》在保證遊戲的挑戰性、趣味性和多樣性上作了不少功夫,僅系統就有幾十個,包括戰鬥系統、玩家系統、銘文等。目前,《王者榮耀》的後臺數據量已高達數百TB,1個區有100多個表且還在不斷增長。這就導致了《王者榮耀》對數據庫性能、穩定性、擴縮容、成本、遊戲特有場景等方面有着更高要求。數據庫

對於《王者榮耀》而言,數據庫是靈魂,承載着全部系統的信息落地,而專爲遊戲而生的騰訊雲自研分佈式NoSQL數據庫TcaplusDB,5年來一直爲《王者榮耀》的核心數據提供數據庫服務。能夠說,每一次的玩家登錄、每一局的對戰、每一輪的錄像回放都是對TcaplusDB的考驗,每一次的團戰都須要在海量的數據中進行增刪改查。服務器

「咱們對比過不少數據庫,在目前王者的數據容量和併發條件下,TcaplusDB的讀寫時延是最穩定的!」《王者榮耀》相關技術負責人評價道。在他看來,TcaplusDB高併發、低時延、低成本的性能優點爲《王者榮耀》的數據運行和遊戲業務場景提供了強勁支撐。併發

具體來講,TcaplusDB擁有接近無限的水平擴展能力。基於shard分片的分佈式技術,其單表容量能夠支持2.56 PB,吞吐能力隨硬件擴充呈線性增加。同時,經過快慢請求分離與記錄級鎖,它能夠解決複雜請求和簡單請求的隔離,減小鎖定範圍提高讀寫效率。此外,基於創新算法,TcaplusDB能夠在一個進程中實現冷熱數據的交換,解決跨進程數據交換的一致性、可用性與管理複雜等問題。負載均衡

從遊戲業務場景的角度出發,TcaplusDB支持表級和記錄級的數據生命週期管理,可以有效實現活動數據的過時清理。此外,基於冷備數據和二進制日誌數據,TcaplusDB還能夠針對全服級、表級、記錄級或按照指定條件進行回檔,且時間精確到毫秒。分佈式

另外一方面,面對海量增加的用戶數,系統穩定和擴容一直是《王者榮耀》的關注焦點。高併發

無論是每一年的「開黑節」、春節期間的DAU上漲仍是5週年慶的計劃性擴容,TcaplusDB都能在應對頻繁擴容需求的同時確保着5個9的高可用性。性能

2020年春節,TcaplusDB陸續對各個大區7個表進行了15次擴容,擴容集羣服務只增長了20組。最後一次擴容,在1小時內完成了突增100萬-200萬 PCU擴容,且在擴容過程當中玩家無感知。設計

這是個幾乎不可能完成的任務,但TcaplusDB交上了滿分答卷。它是怎麼作到的?日誌

首先是理解應用的自動負載均衡和過載保護。以過載保護爲例,TcaplusDB能站在「遊戲服務器」的視角感知業務過載,經過處理時延、隊列長度、成功率等指標綜合評估數據庫的負載能力,對高負載應用進行保護,防止雪崩發生。

同時,TcaplusDB針對計劃內擴容和計劃外擴容,提出了不一樣的解決方案,根據實際狀況隨機應變,靈活處理,並經過對可用區故障的自動切換與修復,在技術上支持跨可用區和單設備的故障自動切換和修復,既保障了擴容的速度和效率,又作到對玩家的徹底無感。

值得一提的是,這不是首次面對這樣的挑戰。早在2017年春節期間,TcaplusDB就經歷了連續七天的深夜擴容,在系統能力不足的狀況下,經過開啓讀分流規避方案,成功度太高峯期。S賽季期間,因爲玩家想看的賽季場數超過最初設計的10場,TcaplusDB是進行了大規模改表結構,緊急支持表結構修改對用戶無感方案。

歷經騰訊內部8年的遊戲經驗積累,TcaplusDB數據庫已普遍應用於《王者榮耀》、《刺激戰場》、《穿越火線》、《火影忍者》等數百款流行遊戲,並經過騰訊雲向全球遊戲業務提供服務。

將來,隨着以《王者榮耀》爲表明的手遊市場邁入新臺階,騰訊雲數據庫也將持續投入資源以豐富遊戲行業的技術產品生態,不斷提高綜合服務能力,助力手遊市場高質量快速增加。

本文由博客一文多發平臺 OpenWrite 發佈!

相關文章
相關標籤/搜索