瘋狂了免绿!當游戲愛上MongoDB會怎么樣?擦盾?嘲驾?

添加微信公眾號《Linux就該這么學》,掌握最新IT資訊動態(tài)迹卢,免費領(lǐng)取Linux課程以及專業(yè)的RHCE考前答疑服務(wù)辽故。

《Linux就該這么學》在線免費閱讀地址:http://www.linuxprobe.com/

純手工打造每一篇開源資訊與技術(shù)干貨,數(shù)十萬程序員和Linuxer已經(jīng)關(guān)注婶希。

導讀 前端時間魔獸這個電影我相信大家都看過了哈榕暇,作為一個碼農(nóng),有時候我也會去思考魔獸世界這個游戲背后他的一些設(shè)計和實現(xiàn)喻杈,比如他用什么數(shù)據(jù)庫彤枢。當然真正用什么數(shù)據(jù)庫這個我是不確定的,我們今天的主題是當游戲愛上MongoDB筒饰,所以我們只聊游戲如果采用MongoDB作為數(shù)據(jù)庫有哪些好處缴啡。

我們知道,游戲的一個特點是需求變化快瓷们,為了保持玩家一直有新鮮感业栅,需要不停的往游戲中加入新的元素。就拿一些MMO游戲的裝備(道具)系統(tǒng)為例谬晕,假如使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫來存放這些數(shù)據(jù)碘裕,可能會面臨需要經(jīng)常做表結(jié)構(gòu)修改這樣的DDL操作。那如果采用MongoDB的話就不會有這個問題攒钳,schema-free的特性可以支持一個表(集合)內(nèi)包含不同結(jié)構(gòu)的文檔帮孔。此外,MongoDB直接使用JSON格式進行數(shù)據(jù)交互,這也是最接近對象模型的文兢,對開發(fā)人員來說非常友好晤斩。關(guān)于如何使用MongoDB進行數(shù)據(jù)建模可以參考TJ寫的MongoDB進階模式設(shè)計姆坚。

一些專有場景-道具自動過期和附近玩家

現(xiàn)在很多游戲都走游戲免費道具收費的模式澳泵,有很多類似道具自動過期的功能,這可以通過MongoDB的TTL索引來輕而易舉的實現(xiàn)兼呵。同樣兔辅,現(xiàn)在很多游戲使用地理位置來作為社交系統(tǒng)的一部分,比如附近玩家這樣的功能萍程。這也可以直接利用MongoDB的地理位置索引來做幢妄。MongoDB原生支持了這些功能,可以說非常方便茫负。

高可用

以前玩魔獸世界的時候蕉鸳,每個禮拜二都要來一次停服維護。當時大家也習慣了忍法,畢竟魔獸世界還是玩點卡的潮尝,游戲時間都是自己花錢買的。但對于現(xiàn)在的免費游戲來說饿序,經(jīng)常停服勉失,可能玩家都會接受不了。對那些日流水好幾位數(shù)字的游戲公司來說原探,時間就是金錢乱凿,停服維護可能就有種自己在不停燒錢的感覺。所以現(xiàn)在都要追求服務(wù)高可用咽弦,盡可能減少停服時間徒蟆。數(shù)據(jù)庫服務(wù)通常也是整個游戲服務(wù)中的一個重要環(huán)節(jié)。MongoDB的副本集是一個相當成熟的高可用架構(gòu)型型,它通過一主多備結(jié)構(gòu)保證服務(wù)的可用性段审,當主宕機后還存活的備會自動選舉出新的主。



阿里云數(shù)據(jù)庫MongoDB在MongoDB自身高可用架構(gòu)下做了進一步增強闹蒜。采用一主一備一隱藏節(jié)點的經(jīng)典3節(jié)點配置寺枉,對外暴露兩個VIP提供用戶訪問,在某個節(jié)點宕機時自動進行VIP切換绷落,保證用戶始終有2個節(jié)點可用姥闪。需要注意的是,這必須是用戶正確配置成副本集訪問模式時才生效砌烁。

高可擴展

說完高可用筐喳,我們來說說高可擴展方面。同樣還是魔獸世界,想必很多早期玩家都體驗過排隊疏唾,之所以要排隊,主要是因為服務(wù)能力不夠?qū)е潞啤.斎换痹啵@通常和數(shù)據(jù)庫無關(guān),不過撇寞,一個好的架構(gòu)師是不會允許有某個環(huán)節(jié)出現(xiàn)明顯的瓶頸的顿天。MongoDB由于其數(shù)據(jù)相對獨立的特性,相比于關(guān)系型數(shù)據(jù)庫蔑担,較容易進行水平擴展牌废。其Sharding架構(gòu)已在很多生產(chǎn)環(huán)境中久經(jīng)驗證,業(yè)內(nèi)有些公司對其進一步優(yōu)化后已在管理上百PB的數(shù)據(jù)啤握。對于運維人員來說也是相當友好鸟缕,動態(tài)擴容和負載均衡都是自動進行的,用戶只需要選一個好的shard key即可排抬。

回檔


運營游戲有時候會面臨不得不對游戲進行回檔這樣的痛苦選擇懂从。因為程序不可避免會有bug的存在,如果有某個bug被惡意利用蹲蒲,亦或者是人皆會犯錯誤番甩,某個GM不小心手抖發(fā)了大量RMB道具,都可能導致較大的經(jīng)濟損失出現(xiàn)届搁。如果游戲不是很完善缘薛,沒有一個更好的解決方案的情況下,這時候可能就要考慮對游戲進行回檔了卡睦。對于數(shù)據(jù)庫數(shù)據(jù)的回檔來說宴胧,MongoDB提供了一個延遲副本集節(jié)點的設(shè)定來解決這個問題。即么翰,將某個節(jié)點配置成落后于最新數(shù)據(jù)一定的時間量牺汤。


當然,這還是很粗粒度的浩嫌,如果要精確回檔到延遲時間內(nèi)或者更早的時間點檐迟,甚至是任意時間點,就還要在備份恢復這塊上做更多的工作码耐。阿里云MongoDB近期會推出任意時間點恢復的功能追迟,以滿足包括這個場景在內(nèi)的備份恢復需求,敬請關(guān)注骚腥。

運營數(shù)據(jù)分析

現(xiàn)在是大數(shù)據(jù)時代敦间,通過數(shù)據(jù)分析輔助運營決策是必不可少的。在數(shù)據(jù)分析方面,MongoDB提供了Aggregation pipeline和Map-Reduce這兩個強大的功能廓块。其中Aggregation pipeline使用管道處理模型厢绝,提供了過濾、分組带猴、排序等豐富的操作支持昔汉,具有較簡單的操作性兼顧較好的性能,而Map-Reduce則可以使用JavaScript進行自定義處理拴清,在靈活性上更勝一籌靶病。

總結(jié)

綜上所述,MongoDB有如此多的適合于游戲開發(fā)場景的特性口予,還等什么呢娄周?

原文來自:https://yq.aliyun.com/articles/57589?&utm_source=qq

本文地址:?http://www.linuxprobe.com/games-love-mongodb.html編輯:岳國帥,審核員:馮琪


讓您學習到的每一節(jié)課都有所收獲

《Linux就該這么學》是由資深運維專家劉遄及全國多名紅帽架構(gòu)師(RHCA)基于最新RHEL7系統(tǒng)共同編寫的高質(zhì)量Linux技術(shù)自學教程沪停,極其適合用于Linux技術(shù)入門教程或講課輔助教材煤辨。

? 劉遄老師QQ:5604241

? 學員助教QQ:5604674

? Linux技術(shù)交流A群(滿):560843

? Linux技術(shù)交流B群:340829

? Linux技術(shù)交流C群:463590

? 官方站點:www.linuxprobe.com

? 電腦在線閱讀效果更佳:

http://www.linuxprobe.com/chapter-00.html

按住圖片3秒,即可自動關(guān)注牙甫。

點擊左下角查看更多熱門技術(shù)干貨

添加微信公眾號《Linux就該這么學》掷酗,掌握最新IT資訊動態(tài),免費領(lǐng)取Linux課程以及專業(yè)的RHCE考前答疑服務(wù)窟哺。

《Linux就該這么學》在線免費閱讀地址:http://www.linuxprobe.com/


閱讀原文:http://tdzx1999.blog.163.com/blog/static/138416509201691494233419/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泻轰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子且轨,更是在濱河造成了極大的恐慌浮声,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旋奢,死亡現(xiàn)場離奇詭異泳挥,居然都是意外死亡,警方通過查閱死者的電腦和手機至朗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門屉符,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锹引,你說我怎么就攤上這事矗钟。” “怎么了嫌变?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵吨艇,是天一觀的道長。 經(jīng)常有香客問我腾啥,道長东涡,這世上最難降的妖魔是什么冯吓? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮疮跑,結(jié)果婚禮上组贺,老公的妹妹穿的比我還像新娘。我一直安慰自己祖娘,他們只是感情好锣披,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贿条,像睡著了一般。 火紅的嫁衣襯著肌膚如雪增热。 梳的紋絲不亂的頭發(fā)上整以,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音峻仇,去河邊找鬼公黑。 笑死,一個胖子當著我的面吹牛摄咆,可吹牛的內(nèi)容都是我干的凡蚜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吭从,長吁一口氣:“原來是場噩夢啊……” “哼朝蜘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起涩金,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谱醇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后步做,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體副渴,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年全度,在試婚紗的時候發(fā)現(xiàn)自己被綠了煮剧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡将鸵,死狀恐怖勉盅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咨堤,我是刑警寧澤菇篡,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站一喘,受9級特大地震影響驱还,放射性物質(zhì)發(fā)生泄漏嗜暴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一议蟆、第九天 我趴在偏房一處隱蔽的房頂上張望闷沥。 院中可真熱鬧,春花似錦咐容、人聲如沸舆逃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽路狮。三九已至,卻和暖如春蔚约,著一層夾襖步出監(jiān)牢的瞬間奄妨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工苹祟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砸抛,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓树枫,卻偏偏與公主長得像直焙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子砂轻,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容