數(shù)據(jù)庫(kù)領(lǐng)域又一里程碑式突破!騰訊云TcaplusDB支持過億DAU游戲
11月1日晚,《王者榮耀》官方宣布2020年日活躍用戶數(shù)日均1億,成為國(guó)內(nèi)乃至全球首個(gè)日均DAU過億的手游。與此同時(shí),騰訊云TcaplusDB作為《王者榮耀》的數(shù)據(jù)庫(kù)服務(wù)產(chǎn)品,成為全球首款支持過億DAU游戲的數(shù)據(jù)庫(kù)。
任何一款游戲的成功都不是偶然的,《王者榮耀》在保證游戲的挑戰(zhàn)性、趣味性和多樣性上做了很多功夫,僅系統(tǒng)就有幾十個(gè),包括戰(zhàn)斗系統(tǒng)、玩家系統(tǒng)、銘文等。目前,《王者榮耀》的后臺(tái)數(shù)據(jù)量已高達(dá)數(shù)百TB,1個(gè)區(qū)有100多個(gè)表且還在不斷增加。這就致使了《王者榮耀》對(duì)數(shù)據(jù)庫(kù)性能、穩(wěn)定性、擴(kuò)縮容、成本、游戲特有場(chǎng)景等方面有著更高要求。
對(duì)于《王者榮耀》而言,數(shù)據(jù)庫(kù)是靈魂,承載著所有系統(tǒng)的信息落地,而專為游戲而生的騰訊云自研分布式NoSQL數(shù)據(jù)庫(kù)TcaplusDB,5年來一直為《王者榮耀》的核心數(shù)據(jù)提供數(shù)據(jù)庫(kù)服務(wù)??梢哉f,每一次的玩家登陸、每一局的對(duì)戰(zhàn)、每一輪的錄像回放都是對(duì)TcaplusDB的考驗(yàn),每一次的團(tuán)戰(zhàn)都需要在海量的數(shù)據(jù)中進(jìn)行增刪改查。
“我們對(duì)比過很多數(shù)據(jù)庫(kù),在目前王者的數(shù)據(jù)容量和并發(fā)條件下,TcaplusDB的讀寫時(shí)延是最穩(wěn)定的!”《王者榮耀》相關(guān)技術(shù)負(fù)責(zé)人評(píng)價(jià)道。在他看來,TcaplusDB高并發(fā)、低時(shí)延、低成本的性能優(yōu)勢(shì)為《王者榮耀》的數(shù)據(jù)運(yùn)行和游戲業(yè)務(wù)場(chǎng)景提供了強(qiáng)勁支撐。
具體來說,TcaplusDB擁有接近無限的水平擴(kuò)展能力?;趕hard分片的分布式技術(shù),其單表容量可以支持2.56 PB,吞吐能力隨硬件擴(kuò)充呈線性增長(zhǎng)。同時(shí),通過快慢請(qǐng)求分離與記錄級(jí)鎖,它可以解決復(fù)雜請(qǐng)求和簡(jiǎn)單請(qǐng)求的隔離,減少鎖定范圍提升讀寫效率。此外,基于創(chuàng)新算法,TcaplusDB可以在一個(gè)進(jìn)程中實(shí)現(xiàn)冷熱數(shù)據(jù)的交換,解決跨進(jìn)程數(shù)據(jù)交換的一致性、可用性與管理復(fù)雜等問題。
從游戲業(yè)務(wù)場(chǎng)景的角度出發(fā),TcaplusDB支持表級(jí)和記錄級(jí)的數(shù)據(jù)生命周期管理,能夠有效實(shí)現(xiàn)活動(dòng)數(shù)據(jù)的過期清理。此外,基于冷備數(shù)據(jù)和二進(jìn)制日志數(shù)據(jù),TcaplusDB還可以針對(duì)全服級(jí)、表級(jí)、記錄級(jí)或按照指定條件進(jìn)行回檔,且時(shí)間精確到毫秒。
另一方面,面對(duì)海量增長(zhǎng)的用戶數(shù),系統(tǒng)穩(wěn)定和擴(kuò)容一直是《王者榮耀》的關(guān)注焦點(diǎn)。
不管是每年的“開黑節(jié)”、春節(jié)期間的DAU上漲還是5周年慶的計(jì)劃性擴(kuò)容,TcaplusDB都能在應(yīng)對(duì)頻繁擴(kuò)容需求的同時(shí)確保著5個(gè)9的高可用性。
2020年春節(jié),TcaplusDB陸續(xù)對(duì)各個(gè)大區(qū)7個(gè)表進(jìn)行了15次擴(kuò)容,擴(kuò)容集群服務(wù)只增加了20組。最后一次擴(kuò)容,在1小時(shí)內(nèi)完成了突增100萬-200萬 PCU擴(kuò)容,且在擴(kuò)容過程中玩家無感知。
這是個(gè)幾乎不可能完成的任務(wù),但TcaplusDB交上了滿分答卷。它是怎么做到的?
首先是理解應(yīng)用的自動(dòng)負(fù)載均衡和過載保護(hù)。以過載保護(hù)為例,TcaplusDB能站在“游戲服務(wù)器”的視角感知業(yè)務(wù)過載,通過處理時(shí)延、隊(duì)列長(zhǎng)度、成功率等指標(biāo)綜合評(píng)估數(shù)據(jù)庫(kù)的負(fù)載能力,對(duì)高負(fù)載應(yīng)用進(jìn)行保護(hù),防止雪崩發(fā)生。
同時(shí),TcaplusDB針對(duì)計(jì)劃內(nèi)擴(kuò)容和計(jì)劃外擴(kuò)容,提出了不同的解決方案,根據(jù)實(shí)際情況隨機(jī)應(yīng)變,靈活處理,并通過對(duì)可用區(qū)故障的自動(dòng)切換與修復(fù),在技術(shù)上支持跨可用區(qū)和單設(shè)備的故障自動(dòng)切換和修復(fù),既保障了擴(kuò)容的速度和效率,又做到對(duì)玩家的完全無感。
值得一提的是,這不是首次面對(duì)這樣的挑戰(zhàn)。早在2017年春節(jié)期間,TcaplusDB就經(jīng)歷了連續(xù)七天的深夜擴(kuò)容,在系統(tǒng)能力不足的情況下,通過開啟讀分流規(guī)避方案,成功度過高峰期。S賽季期間,由于玩家想看的賽季場(chǎng)數(shù)超過最初設(shè)計(jì)的10場(chǎng),TcaplusDB是進(jìn)行了大規(guī)模改表結(jié)構(gòu),緊急支持表結(jié)構(gòu)修改對(duì)用戶無感方案。
歷經(jīng)騰訊內(nèi)部8年的游戲經(jīng)驗(yàn)積累,TcaplusDB數(shù)據(jù)庫(kù)已廣泛應(yīng)用于《王者榮耀》、《刺激戰(zhàn)場(chǎng)》、《穿越火線》、《火影忍者》等數(shù)百款流行游戲,并通過騰訊云向全球游戲業(yè)務(wù)提供服務(wù)。
未來,隨著以《王者榮耀》為代表的手游市場(chǎng)邁入新臺(tái)階,騰訊云數(shù)據(jù)庫(kù)也將持續(xù)投入資源以豐富游戲行業(yè)的技術(shù)產(chǎn)品生態(tài),不斷提升綜合服務(wù)能力,助力手游市場(chǎng)高質(zhì)量快速增長(zhǎng)。