游戏数据存储探讨

前提:分区分服的,并且各区数据不互通,一个区的注册数在1kw以内的,不需要特别考虑,老实的用mysql存储,redis作缓存即可解决,个别热点作特殊优化。以下针对大规模的全区全服游戏,注册数通常在1e以上,pcu为50w左右。

1. 纯粹用redis来存?

并不可行,目前没有多成熟的运维方案,没法保证redis百分百数据可靠,仍然需要使用mysql来存,redis作快速缓存,以及一些数据结构上的支持,比如排行榜(用sortedset)等。redis单实例使用不够运营标准,有一些集群方案,如twemproxy,codis,可做到高可用,透明的扩容,但需要仔细研究方案的弱点。
redis有一些坑:
云风:谈谈陌陌争霸在数据库方面踩过的坑( Redis 篇)
云风:谈谈陌陌争霸在数据库方面踩过的坑(排行榜篇)

2.mysql分库分表

主要考虑两种方案:1. 多个单实例的mysql组成的存储,要分库分表去存,按某些id去sharding,数据存入多个实例;2.使用类似于spider的方案,在mysql的存储这一层就支持多机存储,自动的按指定的id作sharding,这种往往要自己定制(比如tencent的tspider),否则会有各种问题,比如(自增键不支持)

3.mongodb?

坑比较多,多用于作为流水日志的存储。
有一些坑:
云风:谈谈陌陌争霸在数据库方面踩过的坑(芒果篇)

你可能感兴趣的:(工程经验)