從找不到需求險(xiǎn)些被叫停,到支撐億級(jí)DAU的數(shù)據(jù)庫行業(yè)標(biāo)桿,騰訊云數(shù)據(jù)庫TcaplusDB在風(fēng)雨中走過了整整10年。輝映日月破風(fēng)浪,十年一劍破九天。百萬行代碼就像淙淙流淌的數(shù)據(jù)溪流,終于在十年后匯成不可逾越的護(hù)城河。
出發(fā)
2010年前后,QQ空間很火,帶動(dòng)了基于SNS互動(dòng)頁游(WebSNS)的火爆,騰訊內(nèi)部開始考慮怎么做頁游。也開始建設(shè)頁游基礎(chǔ)技術(shù)體系,其中最重要的產(chǎn)出是研發(fā)自己的分布式數(shù)據(jù)庫TcaplusDB。與MMOG游戲不同,通常WebSNS游戲是全區(qū)全服的,數(shù)據(jù)集中存儲(chǔ);而其游戲邏輯服務(wù)器是對(duì)等的,web客戶端通過短連接與服務(wù)器進(jìn)行通信,也就是說玩家游戲過程,后端交互的邏輯服務(wù)器隨時(shí)會(huì)變動(dòng);這些特性導(dǎo)致在邏輯層不方便對(duì)用戶數(shù)據(jù)做緩存。
此外,WebSNS游戲基于玩家之間社會(huì)關(guān)系的互動(dòng)場(chǎng)景非常多,玩家的一個(gè)互動(dòng)操作,需要讀取和修改與此關(guān)聯(lián)的其他多個(gè)玩家的數(shù)據(jù);這意味著web游戲中數(shù)據(jù)讀寫訪問頻率高于同時(shí)在線數(shù),其訪問頻率實(shí)際上是在線數(shù)的N倍;假如某個(gè)100萬在線的web游戲,平均每個(gè)玩家有50個(gè)好友,如果同時(shí)有1%的玩家觸發(fā)一個(gè)好友動(dòng)作,則可能會(huì)觸發(fā)50萬次數(shù)據(jù)訪問。也就是說,基于這樣的場(chǎng)景,web游戲的數(shù)據(jù)庫層需要支持比傳統(tǒng)MMOG游戲大的多的訪問頻率,如果仍然采用傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)(如MySQL),要支持這么大的訪問頻率,其代價(jià)非常大。
因此,在游戲邏輯層和傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)之間架設(shè)高速的緩存系統(tǒng),對(duì)web游戲來說至關(guān)重要。
當(dāng)時(shí)業(yè)界已經(jīng)有比較多的提供高速數(shù)據(jù)訪問的NoSQL產(chǎn)品,不可否認(rèn),這些NoSQL產(chǎn)品在一定場(chǎng)景下使用是很優(yōu)秀的,但在部分場(chǎng)景或需求下存在不支持或不夠出色的情況——比如全內(nèi)存帶來的成本問題或?qū)Ξ惒綌?shù)據(jù)讀寫支持不夠等。
2011年起,騰訊內(nèi)部開始著手研發(fā)一款自己的分布式游戲數(shù)據(jù)庫系統(tǒng)——TcaplusDB。這是個(gè)很美好的愿景。但從零開始自己研發(fā)一款數(shù)據(jù)庫又談何容易?2009 年開始,大量新的NoSQL數(shù)據(jù)庫涌現(xiàn),在整個(gè)行業(yè)掀起了一場(chǎng)NoSQL 革命,如今赫赫有名的 Redis、MongoDB 皆誕生于那一年。研發(fā)TcaplusDB是高樓萬丈平地起的事情,我們一邊調(diào)研外部產(chǎn)品,一邊抓住游戲行業(yè)特定的場(chǎng)景和需求,做最小化的產(chǎn)品驗(yàn)證。經(jīng)過不斷的驗(yàn)證,第一個(gè)版本在2012年初終于出爐。
時(shí)機(jī)
2012年4月,TcaplusDB首次正式提供服務(wù),支持騰訊自研的頁游《夜店之王》?!兑沟曛酢肥球v訊自主研發(fā)的一款以時(shí)尚夜店為題材,以夜店經(jīng)營為核心,融入吸血鬼元素的模擬經(jīng)營類社交游戲。
當(dāng)時(shí)的游戲,大部分是“分區(qū)分服”的形式,每個(gè)區(qū)域內(nèi)的玩家自己玩。但基于社交場(chǎng)景的WebSNS需要所有的好友在一起玩?!兑沟曛酢肪褪沁@樣典型的場(chǎng)景,TcaplusDB的高性能和低成本贏得了項(xiàng)目組的青睞。由于采用了包括 TcaplusDB 數(shù)據(jù)庫在內(nèi)的新技術(shù),《夜店之王》通過“全區(qū)全服”,讓玩家在一個(gè)池子里“大亂斗”并通過實(shí)時(shí)派對(duì)邀請(qǐng)好友體驗(yàn)?!兑沟曛酢吠ㄟ^QQgame游戲大廳、空間、游戲人生、朋友等諸多渠道進(jìn)入取得了相當(dāng)不錯(cuò)的成績(jī)。
發(fā)展過程中,挫折并不是沒有,2013年9月騰訊移動(dòng)游戲《天天酷跑》火爆公測(cè),開啟QQ、微信雙平臺(tái)登陸,隨時(shí)與QQ、微信好友一起玩。上線后,在不到一天的時(shí)間內(nèi)就迅速登上了蘋果App Store暢銷榜第一位。
當(dāng)初公測(cè)的時(shí)候,內(nèi)部霸氣地給《天天酷跑》這款新游戲配了100臺(tái)服務(wù)器,對(duì)于一款新游戲,這顯然是一個(gè)很充裕的配置。然而誰都沒想到《天天酷跑》會(huì)這么火爆,準(zhǔn)備的100臺(tái)服務(wù)器很快就要高容量了。最后,在多部門的協(xié)同下,擴(kuò)容的50臺(tái)服務(wù)器快上架。硬件上架、網(wǎng)絡(luò)打通、操作系統(tǒng)安裝妥當(dāng),TcaplusDB的系統(tǒng)軟件也很快部署完成。
但接下來就要通過部分?jǐn)?shù)據(jù)的搬遷來實(shí)現(xiàn)數(shù)據(jù)庫承載能力的擴(kuò)容。按照正常邏輯,哪怕是停服維護(hù),通常的擴(kuò)容都有一個(gè)提前準(zhǔn)備的過程,這次來得實(shí)在太快了,眼看舊數(shù)據(jù)庫在逼近存儲(chǔ)極限,那邊不斷涌入的玩家還在不斷地制造新數(shù)據(jù),搬遷的速度必須足夠快,才能避免數(shù)據(jù)庫爆倉。當(dāng)時(shí)在業(yè)內(nèi)深耕多年的大??嘈χf:“按照當(dāng)前的情況,24小時(shí)后數(shù)據(jù)庫就會(huì)崩潰,游戲只能暫時(shí)停服。”
誰都不敢面對(duì)這樣的結(jié)局。
24小時(shí)很短,也能做很多事情,一個(gè)字,干!
于是,我們和當(dāng)時(shí)酷跑的業(yè)務(wù)團(tuán)隊(duì)一起挺身而出,背水一戰(zhàn),連夜調(diào)試搬遷工具,在凌晨緊急上線,硬是抗住了一波又一波海量的用戶訪問沖擊。有了這次的經(jīng)歷,我們下定決心,我們要做得更好。之后的幾個(gè)月,我們都在重復(fù)一件事——一行一行地碼代碼,看得最多的是星夜、喝得最多的是咖啡,終于把這套數(shù)據(jù)庫的自動(dòng)擴(kuò)容系統(tǒng)打磨得穩(wěn)定高效。
成長(zhǎng)
2014年2月,TcaplusDB已經(jīng)深度優(yōu)化了存儲(chǔ)引擎,推出全托管的分布式存儲(chǔ)服務(wù)。
但還不夠,遠(yuǎn)遠(yuǎn)不夠。
還記得上面說的《夜店之王》嗎?經(jīng)過2年多的發(fā)展,此時(shí)的《夜店之王》已經(jīng)是排名第一的經(jīng)營類社交游戲。而《夜店之王》使用的卻還是TcaplusDB的老版本。TcaplusDB的全托管版本,性能得到了較大的提升,在服務(wù)上給項(xiàng)目組帶來了較大的便利性。因此,將《夜店之王》TcaplusDB切換到全托管版本被提升日程。
由于《夜店之王》是線上業(yè)務(wù),且此次切換TcaplusDB不能停服,還得解決新老協(xié)議不同、落地?cái)?shù)據(jù)格式不同、數(shù)據(jù)分布不同等問題。對(duì)于任何一個(gè)團(tuán)隊(duì),都是一個(gè)很大的挑戰(zhàn)。
最終,在跟《夜店之王》團(tuán)隊(duì)的聯(lián)合攻堅(jiān)之下,我們通過數(shù)據(jù)雙寫、增加協(xié)議轉(zhuǎn)換層、數(shù)據(jù)一致性校驗(yàn)工具等工作。最終完美實(shí)施了服務(wù)的遷移,在這個(gè)時(shí)期積累的數(shù)據(jù)遷移方案,也為后續(xù)TcaplusDB在無損水平擴(kuò)展、無損數(shù)據(jù)遷移能力的產(chǎn)品化打下了堅(jiān)實(shí)的基礎(chǔ)。
2015年年底《王者榮耀》正式公測(cè)。這款游戲的火爆程度又一次突破了大家的想象力,這個(gè)游戲就像一個(gè)永遠(yuǎn)不能滿足的巨獸,勢(shì)不可擋地吞噬著各種后臺(tái)資源。在打破各種游戲記錄的同時(shí),這個(gè)逆天的游戲每一秒鐘都在創(chuàng)造數(shù)據(jù)庫的新紀(jì)錄。最瘋狂的游戲浪潮,一般出現(xiàn)在周末?;叵肽莻€(gè)時(shí)候,一到周末,我們就在家盯著電腦,看著各種數(shù)字瘋狂飆升。前期的技術(shù)積累終于派上了用場(chǎng),嚴(yán)陣以待的技術(shù)人也終究見證了歷史。幾千臺(tái)服務(wù)器在預(yù)先設(shè)定好的統(tǒng)一調(diào)度機(jī)制下不停服自動(dòng)擴(kuò)容,完美扛過流量高峰。同年,TcaplusDB又相繼推出故障自動(dòng)恢復(fù)、不停服升級(jí)、不停服擴(kuò)縮容功能,成功支持了《天天愛消除》、《全民飛機(jī)大戰(zhàn)》、《全民突擊》、《CF手游》和《火影忍者手游》等游戲。2016年,TcaplusDB陸續(xù)推出細(xì)粒度備份回檔、軟硬件升級(jí)、機(jī)房裁撤搬遷、軟硬件故障對(duì)業(yè)務(wù)無損等核心能力。同時(shí)優(yōu)化單業(yè)務(wù)海量數(shù)據(jù)訪問能力,提供穩(wěn)健高性能的數(shù)據(jù)存儲(chǔ)服務(wù)。
2017年元宵晚會(huì),在春晚小品《回家》中,主持人提到了《王者榮耀》,這讓團(tuán)隊(duì)即緊張又興奮。接著,又是一路不斷飆升的QPS陪伴著我們度過一個(gè)不眠之夜,好在最后又是有驚無險(xiǎn)。
同年,TcaplusDB支持protobuf數(shù)據(jù)格式定義及訪問,協(xié)議更加開放,兼容行業(yè)使用習(xí)慣。
2018年,TcaplusDB將高可用、無損擴(kuò)縮容做到極致,深度優(yōu)化性能降低成本,提升Api多語言、多平臺(tái)、多模式、易使用的能力,陸續(xù)為《QQ飛車》、《無限法則》等游戲提供高品質(zhì)數(shù)據(jù)存儲(chǔ)服務(wù)。
開放
2019年憑借多年的積累和在游戲分布式系統(tǒng)情景中適配能力,TcaplusDB做為騰訊完全自研的NoSQL數(shù)據(jù)庫,正式成為騰訊云Tcaplus,通過騰訊云對(duì)外提供服務(wù)。結(jié)合了騰訊云的優(yōu)勢(shì)后,騰訊云Tcaplus又在多租戶、安全性、開放API和多語言SDK等方面有了極大的提升。
2020年NEXON、上海盛趣等游戲廠商開始選擇騰訊云TcaplusDB做為游戲的核心數(shù)據(jù)庫支撐業(yè)務(wù)。根據(jù)客戶的測(cè)試與使用反饋,TcaplusDB的毫秒級(jí)時(shí)延、千萬級(jí)QPS、無限水平擴(kuò)展無需分庫分表、細(xì)粒度回檔、合服和無損彈性變配等能力能夠?qū)崒?shí)在在的幫助到游戲業(yè)務(wù)。
騰訊云TcaplusDB的核心能力得到了客戶的認(rèn)可的同時(shí),不得不提一提我們強(qiáng)大的遷移服務(wù)。當(dāng)時(shí)上海盛趣使用的是DynamoDB,上海盛趣的技術(shù)團(tuán)隊(duì)需要解決開發(fā)者不熟悉騰訊云TcaplusDB的用法和已有代碼遷移的問題。通過溝通,騰訊云TcaplusDB的接口的易用性得到了客戶的充分認(rèn)可,重點(diǎn)轉(zhuǎn)移到了已有代碼如何遷移到騰訊云TcaplusDB 接口上。經(jīng)過雙方技術(shù)團(tuán)隊(duì)的溝通,上海盛趣的架構(gòu)中有一個(gè)數(shù)據(jù)訪問適配層,所有的數(shù)據(jù)庫訪問均通過該適配層,問題一下變得清晰和簡(jiǎn)單了起來。騰訊云派出技術(shù)專家駐場(chǎng),僅僅用了兩周時(shí)間就和上海盛趣的研發(fā)團(tuán)隊(duì)一起完成了代碼遷移的工作。 至此,TcaplusDB開始全面為公有云客戶提供服務(wù)。
2020年12月14日,中國信息通信研究院官方權(quán)威公布第十一批大數(shù)據(jù)產(chǎn)品能力評(píng)測(cè)結(jié)果,騰訊云TcaplusDB成為首批通過鍵值型內(nèi)存數(shù)據(jù)庫功能評(píng)測(cè)的分布式NoSQL數(shù)據(jù)庫產(chǎn)品。
2021年1月,TcaplusDB社區(qū)上線,這標(biāo)志著TcaplusDB將通過和廣大的用戶及行業(yè)合作伙伴進(jìn)行交流和共建,持續(xù)推動(dòng)國產(chǎn)分布式NoSQL數(shù)據(jù)庫生態(tài)的繁榮。
下一個(gè)十年:為行業(yè)提供更多助力
自誕生以來,騰訊云TcaplusDB就以服務(wù)更多開發(fā)者為目標(biāo),面向擁有使用高性能數(shù)據(jù)庫的研發(fā)人員,分享經(jīng)過騰訊內(nèi)部檢驗(yàn)的存儲(chǔ)研發(fā)經(jīng)驗(yàn)、工具和行業(yè)資源。而在未來,騰訊云TcaplusDB還將以國產(chǎn)數(shù)據(jù)庫領(lǐng)航者的身份,在這條道路上走得更遠(yuǎn),根據(jù)行業(yè)動(dòng)態(tài)為平臺(tái)引入更多元化的功能。同時(shí),騰訊云TcaplusDB將和行業(yè)合作伙伴一起,繼續(xù)分享騰訊分布式數(shù)據(jù)庫方面的經(jīng)驗(yàn),并將積極投入基于多模和多負(fù)載能力的一站式低成本數(shù)據(jù)處理能力的研發(fā);滿足基于全球分布式能力,助力企業(yè)解決業(yè)務(wù)出海、全球同服/多活、跨域數(shù)據(jù)遷移等關(guān)鍵業(yè)務(wù)領(lǐng)域需求。
在下一個(gè)十年,誕生于游戲的TcaplusDB,還將繼續(xù)為更多行業(yè)優(yōu)化數(shù)據(jù)服務(wù)能力,貢獻(xiàn)自己的力量。
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )