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