游戏后端那些事

培训班的学员问,后端的数据缓存部分看不懂

我会用一个故事讲清楚

小明的独立游戏1.0

小明开发了一个独立网游,涉及到的数据保存和读取部分

他使用了数据库mysql,增删改查都是使用sql查询语句

经过几个月后,他努力的把这个游戏做上线

并且游戏反应也不错,上线几天玩家同时在线就达到了好几千

从此,小明的收入有了一定的保障

小明的独立游戏2.0

游戏因为玩法有创意,经过口碑发酵之后,用户数几何激增

每天日活从几千,增加到了几十,几百,几千万之后

游戏出现了明显的卡顿,游戏服务器经常崩溃

这是因为用户数据改变时,mysql的增删改等操作,是直接访问硬盘的

硬件有性能上限,单位时间内写入数据有最大值

当超过最大值时,各种问题就迎面而来

困恼之际他报名了培训班,经过3天针对性一对一指导

项目增加了缓存数据方案

用户的操作不会直接访问硬盘上的数据,而是访问内存数据

缓存数据会所有操作放到队列

每隔5秒把缓存数据库分批次同步到硬盘

避免了高并发访问的问题

内存缓存也有管理业务
比如玩家不在线了,则从缓存中移除,释放内存
玩家登录时,优先从缓存读取数据,没有再把数据库同步到缓存

但缓存数据毕竟是内存数据,目前(2022.5.20)我们电脑能装的内存最大也就128G

当用户数接近几何数字的时候,单台很难撑住

这就要多台电脑联合工作,1台电脑128G,2台就有256

只要小明的钱包跟得上,他可以无限扩容他的服务器内存,从而应对更多的人数

最终也就是当下的商业后端模式
网关服(N)+数据服(N)+游戏服(N)+聊天服(N)。。。。。

核心代码领读:

缓存数据库保存到硬盘
在这里插入图片描述
缓存数据内存的释放管理->避免内存保留了太多不在线的玩家数据
在这里插入图片描述
玩家数据的查找从缓存,或从硬盘中查找
在这里插入图片描述
缓存查询核心
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/koljy111/article/details/124878869