青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Daly的游戲人生

基于binlog的游戲數(shù)據(jù)儲存引擎

    最近組內(nèi)發(fā)表一篇小論文,是關(guān)于改進(jìn)游戲儲存系統(tǒng)的IO性能思路。老大原來早有相同的想法,并且已經(jīng)實(shí)現(xiàn)了大部分模塊,后來和老大一同努力,新的儲存引擎終于逐步完善。在外服環(huán)境跑了兩個(gè)多月,性能和可靠性得到了明顯的提升。具體的細(xì)節(jié)就不方便發(fā)表了,實(shí)踐證明,用binlog來做MMORPG的數(shù)據(jù)儲存是行得通的。

幾個(gè)事實(shí):
   1. 磁盤IO的瓶頸在尋道,順序?qū)懶阅鼙入S機(jī)寫性能高一個(gè)數(shù)量級。

目前典型硬盤的順序?qū)懭胨俣却蠹s是60MB/s , 而尋道時(shí)間在5~8ms (200/)。可以看到硬盤IO的主要瓶頸在于磁頭尋道,也就是隨機(jī)寫。在linux開發(fā)服(非虛擬機(jī),Xeon 3.0G 4/16G內(nèi)存)上做了一個(gè)benchmark

順序?qū)?/span>50MB: 700ms

5000個(gè)文件,每個(gè)10KB(50MB): 12

        10000次隨機(jī)寫,每次1KB(10MB): 21
   2. 游戲數(shù)據(jù)都是K-V數(shù)據(jù),關(guān)系查詢需求極少;k-v數(shù)據(jù)的update很頻繁(實(shí)測是每玩家每5秒一次修改)
   3. MMORPG單服的玩家同時(shí)在線數(shù)量是10K級別, 這個(gè)數(shù)量級可以有效估算binlog的規(guī)模,使得方案可行。

     一般MMORPG系統(tǒng)的存盤策略: 定時(shí)存盤。就是過一段時(shí)間(比如5分鐘)把在線有修改過的玩家數(shù)據(jù),整個(gè)snapshot存下去(mysql也好,文件系統(tǒng)也好)。這樣有兩個(gè)主要問題:一到保存點(diǎn),IO隨機(jī)寫暴增,玩家卡機(jī);如果系統(tǒng)down機(jī), 數(shù)據(jù)就會(huì)有幾分鐘的回檔。而性能和數(shù)據(jù)可靠性兩則是矛盾的,存盤間隔過小,玩家卡機(jī),過大,故障后數(shù)據(jù)回檔時(shí)間長。需知現(xiàn)在的MMORPG,貴價(jià)武器價(jià)值都成千上萬RMB,數(shù)據(jù)可靠性對游戲營運(yùn)影響還是很大的。
    so,   可以用定制的binlog來記錄玩家數(shù)據(jù),也就是說,不記錄整個(gè)snapshot,而是每個(gè)k-v變化時(shí)記錄opcode馬上寫入binlog文件, binlog的格式根據(jù)游戲情況可以高度定制,盡量減少空間。由于是順序?qū)懀阅芸梢苑浅8摺H绻鹍own機(jī),可以根據(jù)binlog來恢復(fù),基本上沒有回檔。不過要解決一個(gè)問題:binlog增長過大 --> 崩潰恢復(fù)時(shí)間過程 & binlog文件本身損壞的風(fēng)險(xiǎn)增大 & 磁盤空間用光。因此binlog需要有rotate機(jī)制, rotate的時(shí)候需要存一次在線玩家數(shù)據(jù)的snapshot, 這樣舊的binlog就可以存到遠(yuǎn)處或者丟棄。rotate的過程中需要考慮恢復(fù)時(shí)玩家數(shù)據(jù)一致性和完備性等等一系列細(xì)節(jié)問題,后來一一解決了。
    這是最近做的成就感的事。幾年沒寫blog了,筆記都記在evernote里,最近又想在公開的地方寫點(diǎn)東西,發(fā)個(gè)文紀(jì)念一下。


posted on 2012-07-01 18:05 Daly 閱讀(2261) 評論(6)  編輯 收藏 引用 所屬分類: 游戲開發(fā)

評論

# re: 基于binlog的游戲數(shù)據(jù)儲存引擎 2012-07-02 09:08 zuhd

能詳細(xì)說下binlog的幾個(gè)缺陷嗎?  回復(fù)  更多評論   

# re: 基于binlog的游戲數(shù)據(jù)儲存引擎 2012-07-02 12:39 Daly

@zuhd

其實(shí)snapshot的保存還是需要的,只是用來binlog可以大大延長存盤間隔。
主要缺陷是:
1. 如果熱數(shù)據(jù)很多,并且很頻繁。binlog文件增長非常快, 硬盤很容易吃滿. 對于熱數(shù)據(jù)量大的項(xiàng)目不合適

2. 要勾住項(xiàng)目里的k-v變化, 對引用型的復(fù)雜類型(map或list),有可能會(huì)漏掉。如果代碼里的k-v set都是用統(tǒng)一接口,則問題不大。

3. 要對復(fù)雜類型(map或list)的改變定義opcode比較難,要依賴于具體數(shù)據(jù)意義做opcode的定義,不然要整個(gè)map給dump下去,太耗了。

4. 這個(gè)binlog系統(tǒng)的opcode由于是高度定制,不同項(xiàng)目間不具有移植性。

5. 寫log一般是單獨(dú)的線程或進(jìn)程,要注意數(shù)據(jù)一致性等等細(xì)節(jié),要詳細(xì)驗(yàn)證。  回復(fù)  更多評論   

# re: 基于binlog的游戲數(shù)據(jù)儲存引擎 2012-07-02 12:43 Daly

@zuhd

當(dāng)數(shù)據(jù)變化寫binlog的順序IO大到一定程度,則系統(tǒng)性能更糟糕(就是diff的數(shù)據(jù)量大于數(shù)據(jù)snapshot本身), 這個(gè)做法就不適合。所以要考慮數(shù)據(jù)規(guī)模,數(shù)據(jù)變化頻率等因素。  回復(fù)  更多評論   

# re: 基于binlog的游戲數(shù)據(jù)儲存引擎 2012-07-17 22:12 liutp

做個(gè)存儲服務(wù)進(jìn)程 應(yīng)該就可以  回復(fù)  更多評論   

# re: 基于binlog的游戲數(shù)據(jù)儲存引擎 2012-08-25 22:03 ZealotYin

我可不可以這樣理解,你們游戲行業(yè)的數(shù)據(jù)基本都是全基于內(nèi)存和DB的,你們需要定時(shí)給用戶設(shè)置一個(gè)存檔點(diǎn)(將某個(gè)時(shí)間的用戶數(shù)據(jù)存盤),傳統(tǒng)的操作是只使用snapshot來實(shí)現(xiàn),而你們是使用定期(較長時(shí)間)snapshot加binlog的方式.這樣可以減少做snapshot的次數(shù),提高性能.對嗎?
抱歉,我是非游戲行業(yè)的,所以您的應(yīng)用場景有點(diǎn)看不懂,但是我專注于存儲.所以以后有機(jī)會(huì)可以多交流一下。我新浪微博ID:殷偉雄  回復(fù)  更多評論   

# re: 基于binlog的游戲數(shù)據(jù)儲存引擎 2012-12-07 16:41 Daly

@ZealotYin
嗯,是這個(gè)意思。另外兩次snapshot保存之間如果crash會(huì)丟數(shù)據(jù),binlog可以保證恢復(fù)。  回復(fù)  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久精彩视频| 欧美区国产区| 亚洲第一天堂av| 久久精品免费播放| 久久国产主播| 久久夜色精品国产欧美乱| 久久嫩草精品久久久精品| 久久午夜电影网| 亚洲电影免费观看高清完整版在线 | 亚洲一区在线观看免费观看电影高清| 久久精品1区| 老**午夜毛片一区二区三区| 欧美成人午夜| 日韩特黄影片| 久久精品天堂| 欧美日韩国产成人在线免费| 国产伦精品一区二区三区高清| 国产亚洲欧美一级| 亚洲国产中文字幕在线观看| 亚洲一区二区久久| 米奇777在线欧美播放| 99一区二区| 久久精品一区二区三区不卡牛牛| 欧美激情乱人伦| 国产精品自在线| 99国产精品久久| 久久免费的精品国产v∧| 91久久久久久久久| 久久gogo国模裸体人体| 欧美三级电影一区| 亚洲第一福利视频| 先锋影音国产一区| 亚洲人午夜精品免费| 性色一区二区三区| 欧美午夜剧场| 亚洲精品久久7777| 久久久亚洲高清| 亚洲私人影院在线观看| 欧美高清视频一区| 尤物99国产成人精品视频| 午夜亚洲一区| 一本色道久久综合| 欧美国产精品日韩| 亚洲电影中文字幕| 久久在线精品| 欧美一级理论片| 国产精品乱人伦一区二区 | 亚洲欧美美女| 亚洲日本欧美日韩高观看| 久久婷婷激情| 国产欧美日韩综合一区在线观看 | 国产精品免费在线| 一区视频在线播放| 久久高清福利视频| 亚洲视屏一区| 国产精品激情av在线播放| 一区二区欧美国产| 一本色道久久| 欧美香蕉视频| 香蕉久久国产| 亚洲欧美日韩视频一区| 国产欧美精品一区二区三区介绍 | 欧美日韩成人一区二区| 亚洲区免费影片| 亚洲电影免费观看高清| 欧美1区视频| 99re6热在线精品视频播放速度| 欧美电影免费观看网站| 美女久久一区| 一本久久a久久免费精品不卡| 欧美激情欧美激情在线五月| 每日更新成人在线视频| 日韩视频一区二区| 中日韩视频在线观看| 国产精品中文字幕欧美| 久久久久久亚洲精品不卡4k岛国| 欧美专区一区二区三区| 亚洲电影在线| 日韩亚洲不卡在线| 国产麻豆成人精品| 久久在线免费视频| 欧美电影免费观看大全| 亚洲一区免费看| 久久精品视频免费| 一区二区欧美激情| 午夜精品久久久久久99热软件| 韩国av一区二区| 亚洲激情黄色| 国产精品日韩专区| 欧美激情中文字幕乱码免费| 欧美日韩三区| 久久一区精品| 欧美日韩一区在线视频| 久久精品在线观看| 欧美福利一区二区| 欧美在线播放一区二区| 久久综合九色99| 亚洲欧美日韩在线| 欧美jizz19性欧美| 欧美在现视频| 欧美伦理影院| 久久综合伊人77777尤物| 欧美涩涩视频| 激情偷拍久久| 亚洲免费电影在线| 在线观看久久av| 亚洲图片欧美午夜| 亚洲卡通欧美制服中文| 欧美在线观看视频| 亚洲综合精品自拍| 欧美电影免费观看网站| 久久亚洲一区二区三区四区| 欧美日韩视频一区二区| 免费成人毛片| 国产一区二区三区不卡在线观看| 亚洲欧洲日本专区| 亚洲激情av在线| 久久国产精品亚洲77777| 亚洲欧美中文日韩在线| 欧美区亚洲区| 亚洲日韩欧美视频一区| 在线观看欧美成人| 久久精品一二三区| 久久精选视频| 国产一区99| 午夜亚洲伦理| 久久久成人精品| 国产日韩欧美亚洲一区| 亚洲性视频网站| 午夜精品久久久久99热蜜桃导演| 欧美日韩1区2区3区| 最新亚洲视频| 一区二区三区欧美视频| 欧美精品日韩精品| 亚洲美女在线国产| 亚洲私人影吧| 国产精品国产a| 亚洲天堂av在线免费| 亚洲欧美日韩一区在线| 国产精品一区二区久久国产| 亚洲主播在线| 久久精品亚洲| 伊人激情综合| 欧美+亚洲+精品+三区| 亚洲福利一区| 日韩亚洲国产欧美| 国产精品成人免费精品自在线观看| 99天天综合性| 欧美一区二区三区的| 国产一区久久久| 久久综合狠狠| 亚洲久久成人| 久久国产夜色精品鲁鲁99| 国产一区二区三区日韩欧美| 久久经典综合| 亚洲国产影院| 午夜精品久久久久久久久| 国产日韩欧美精品一区| 久久久久国产精品厨房| 亚洲激情网站| 欧美在线免费一级片| 亚洲国产精品一区二区久| 欧美日产在线观看| 性视频1819p久久| 亚洲国产美女| 久久er99精品| 亚洲精品中文字幕女同| 国产精品色一区二区三区| 久久久久国产一区二区| 亚洲精品国精品久久99热| 亚洲欧洲av一区二区| 在线免费一区三区| 国产精品v片在线观看不卡| 欧美在线观看网站| 午夜国产欧美理论在线播放 | 欧美精品播放| 欧美一级在线视频| 亚洲三级影院| 老司机免费视频一区二区三区| 日韩午夜中文字幕| 国内在线观看一区二区三区 | 国产精品都在这里| 老司机久久99久久精品播放免费 | 欧美激情一区二区三区高清视频| 亚洲一区二区三区国产| 欧美国产综合一区二区| 久久成人资源| 亚洲综合色激情五月| 亚洲精品视频免费| 国产亚洲精品久久久久动| 欧美日韩一视频区二区| 免费试看一区| 久久久久久久精| 香蕉免费一区二区三区在线观看| 亚洲精品一区二区三区蜜桃久| 另类春色校园亚洲| 久久精品视频免费| 欧美一乱一性一交一视频| 一区二区欧美激情| 99国产精品国产精品久久|