游戏db服务器设计的相关问题

存档的简单历史

单机游戏都会把存档以文件的形式保存在本地,于是最早的一片网游也是这么干的,他们把存档以二进制的形式存储为本地的文件。到了21世纪,mysql等开源数据库引擎的性能和安全性逐渐获得认可,于是主流的网游开始以数据库作为媒介存储玩家存档。但当时的用法和用文件存储实际并没有本质的区别,所有的数据会打包存成blob的形式,然后丢给mysql。

随着网络游戏的复杂化,这种结构并不能适应新的需求,比如gm想查看玩家的部分数据怎么办,又或者排行榜需要对某个数据做top100的排行。通过blob解开再去处理,效果非常不理想。于是,就出现了blob和字段混合使用的存储方式。字段是冗余与blob存档的,作用就是提供给外围服务使用。而blob才是真正游戏使用的,之前怎么用,以后还是怎么用。

于是,我们今天的存档一般是存在数据库中,并且包括若干个blob字段以及若干个int,char字段。

db服务器干什么

保存/读取客户端的存档的媒介

就像前一节说的,它以数据作为媒介,实现了数据存储的过程,就好像用户把存档传到了云端。

裁剪存取API

说白了就是限制访问者的权限,把数据库多加一层保护。对外也更加友好,写db的程序员和写逻辑的程序员可以更好的配合。

实现缓存逻辑

可以再数据库前套一层缓存逻辑,用内存来换时间。因为db服务器了解业务的模式,所以可以写出性能很好的缓存服务。

隐藏实现细节

比如,最终落地是走数据库,还是走文件的,或者某个api是对应于哪种缓存或是延迟还是立刻写,对外层调用者而言仅仅是一个黑盒。对内,如何需要做引擎升级或是切换,对外层更容易做到完全无感。

模块分层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值