游戏服务器的存储设计

游戏服务器本质上也是一个分布式系统,涉及到分布式系统就会涉及到一致性。

目标

  • 数据存储的概念
  • 游戏服务器的存储需求
  • 游戏服务器存储方案

问题

  • 游戏服务器有哪些数据存储需求呢?
  • 相比较web服务,游戏服务器对于存储的需求什么不一样呢?
  • 游戏服务器存储和其他网络服务有什么不一样呢?

游戏服务器相比较web服务,存储的数据更为复杂,而且变化的频率更快。

数据存储基础(基础背景)

什么是数据存储?

数据存储

数据存储是指将内存中数据保存到硬盘上形成持久化数据的过程。

数据存储方式
数据存储方式

关系型数据库

数据库表设计与范式(1NF、2NF、3NF),关系型数据的优点在于减少数据冗余、保证数据完整性、SQL语言提供强大查询功能。缺点是数据结构复杂情况下表结构难以维护,性能一般且容易产生性能瓶颈、可扩展性较差。

关系型数据库

NoSQL数据库

NoSQL数据库特点是Key-Value结构和支持结构化存储,其优点在于易于维护、性能较高、可扩展性好。缺点是容易产生数据冗余、不支持SQL查询。

NoSQL

DHT算法

游戏服务器应该如何选择存储方案?

游戏服务器架构与数据存储设计

游戏业务的特点

  • 响应速度要求非常高:100ms以上的延迟玩家就会有感知,一般在20~50ms之间。
  • 数据更新频率高:玩家数据每时每刻都在变化、如获取经验、获取金钱、获取成就等。

游戏数据的频繁操作程度:update > read > insert > delte

为实现高速响应,玩家数据全部在内存中。在登录时从DB从加载到内存,游戏过程中的数据变更通过操作内存数据完成。游戏服务器正常运行的时候,是不会动态地从DB中去load数据的。

游戏业务特点

传统的web服务其实大部操作时在读数据,所以它会很强调一个缓存的概念。但是游戏中主要是变更比较多,update的操作会非常频繁,所以更多地是在写数据,因此要考虑怎么去降低对DB的负载。

除此之外,还跟游戏的类型和架构有关。传统的MMORPG会有一个选择区服的概念,也就是业界说的比较多的全区全服和分区分服的概念。

游戏服务器架构介绍

分区分服服务器架构

分区分服简单来说就是每个玩家可以选择不同的服务器进行游戏,每个服务器后面的存储都是相互独立的。这样每个服务器的存储压力会变得比较小。

全区全服服务器架构

两种架构直接导致了对db的性能的要求是不一样的,分区分服可以通过业务项或策划项来控制每个区服的人数。传统的RPG每个区分会限制在5k~6k之间,天刀可以做到单服4w人。

游戏服务器数据库选型

  • 分区分服存储特点:单服数据量较少、请求量少、无需动态在线扩容,因此比较适合采用RDBM。
  • 全区全服存储特点:数据量大、请求量大、需要动态在线孔融,因此采用NoSQL比较适合。

使用MySQL作为游戏数据库

  • Blob:A Blob is a binary large object that can hold a variable amount of data.

blob数据类型分为:tinyblob/blob/mediumblob/longblob,它们之间的区别主要在于容纳对象的大小不一样。

blob

其实也可以把MySQL当作一个KV系统来使用

  • 混合式存储设计

稳定数据使用表字段来存储,复杂且不稳定的数据采用blob存储,充分利用SQL的查询优势和KV的便捷优势。

image.png

数据库选择好了,那么如何设计存盘策略呢?

对游戏服务器来说,读不是问题因为很少,更新才是问题。更新首先会在内存中把它记录下来,最终落地综合考虑也是采用一种混合式的操作。

游戏服务器存盘策略设计

  • 游戏存盘需求特点:update>read>insert>delete
  • 定期自动存盘:3分钟自动存盘
  • 重要操作即时存盘:例如升级/下线/关服、获得高价值道具...
  • 存储缓冲队列:削峰填谷
游戏服务器存盘策略

游戏服务器存储容灾

  • 热备:主从热备,自动切换
  • 冷备:每日全量备份,关键操作前做全量备份。
存储容灾

运营日志存储

什么是运营日志呢?它是游戏中玩家重要行为的记录,诸如登录记录、等级变更、财产变化流水、交易记录等信息。

运营日志有什么用途呢?运营分析哟西中玩家动态,是做运营决策的数据基础。当发生异常时,是追查玩家在游戏内的活动轨迹的重要轨迹。

运营日志的存储,由于数据量巨大,单服每日可高达5~10G的未压缩数据。一些涉及游戏收入的流水,是需要永久存档备查的。另外一方面便于分析统计。

运营日志
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容