游戏服务器数据缓存和持久化中间件设计总结
来源:互联网 发布:硬盘安装ubuntu双系统 编辑:程序博客网 时间:2024/05/16 06:56
http://blog.csdn.net/herm_lib/article/details/8171196
本文就介绍游戏服务器的数据缓存和持久化的设计策略。基本上各种类型的游戏服务器都适用,包括全区全服、分区分服的SNS类、ACG或者RPG。数据的缓存和持久化从技术角度来讲是比较容易实现?做过几个类似的功能模块后,渐渐地会有一种模块重用的想法,有一个公共的中间件可以容易支持我们游戏服务器各种缓存和持久化需求。目前有类似开源的项目,我们以前的公司有类似的项目。项目组如果利用可靠的中间件,还是可以提高开发效率的。
本文缓存和持久化中间件的设计目标
限定游戏服务器领域,但基本上满足所有类型的游戏需求。我不废话,直接从需求场景引出要支持哪些功能。
缓存和持久化中间件几个元素
(1) 访问中间件的接口
这块主要在写数据到cache的策略,实时写或者定时写;
定时写数据的优先级, 比如重要数据立即写,非重要数据,隔很长时间才写;
分布式的访问策略,取漠或者一致性hash定位cache。
(2) cache
中间件本身要不要做cache,如果使用cache,有没有某种淘汰策略(如LRU);
cache持久化或者非持久化;
实时持久化或者定时持久化;
定时持久化的优先级;
分布式策略。
(3) 持久化
数据持久化的格式;
持久化的目标设备;
分布式策略。
需求场景一
logicd [cache] ---------------> storage
logicd就逻辑服务器,storage是我们数据持久化的存储设备(DB,文件之类的)。
有的游戏一个逻辑服务器,玩家在游戏的过程中不会切换服务器。这种情况,cache最好作为一个模块(so/lib)内嵌到游戏逻辑进程中。
因为logicd已经缓存了数据,cache模块就不做缓存了,否则就双份缓存,cache模块相当于简单持久化接口。
cache的接口定时写到cache;
没有缓存的话,cache利用host进程的内存,采用定时的时持久化策略;或者只要接口有数据过来,马上持久化,让数据落地。
需求场景二
logicd1 + logicd2 --------->cahced------>storage
这个场景在实际的游戏服务器设计中是蛮多的,就是玩家可能会在两个逻辑服务器上切换,从logicd1切到logicd2的时候,从cached拉最新的数据。
logicd的访问接口一般是优先级定时写到cahced;
cached要做缓存,采用类似LRU的淘汰算法或者不淘汰,优先级定时地持久化到storage。
需求场景三
logicd1 + logicd2 + otherd ------->cached
这个场景模型在sns类的游戏中可见,比如sns类的可有可无的好友消息动态之类的内容,某几种服务器产生消息,直接写到cached;其他服务器可能要从cached去读。
logicd的访问接口一般是优先级定时写到cahced,这个定时时间间隔可以开得长一些;
cache肯定做缓存采用类似LRU的淘汰算法或者不淘汰,不持久化,机器重启数据就没了。
就简单地写这些,下篇准备总结一下具体理想化的实现,同时放出herm cached的源码实现。
- 游戏服务器数据缓存和持久化中间件设计总结
- 游戏逻辑服务器和数据缓存服务器交互设计策略总结
- 棋牌游戏服务器-数据同步和持久化
- redis缓存数据持久化
- 游戏服务器之数据收发缓存
- 游戏服务器之角色描述数据缓存
- 游戏数据库服务器 数据缓存 增量更新
- hibernate 缓存——数据持久化
- android数据持久化总结
- iOS 数据持久化总结
- 《iOS总结》数据持久化
- 消息中间件-activemq消息机制和持久化介绍(三)
- iOS文件操作和数据持久化总结
- 数据持久化(归档和反归档操作 ,清除缓存等等)
- 在nodejs使用Redis缓存和查询数据及Session持久化(Express)
- 数据持久化概念和Java数据持久化技术
- MMC 3.0开发 - 数据持久化设计
- erlang 游戏服务器 缓存
- poj 2121.Inglish-Number Translator
- shell 切割字符串
- 动态创建ImageView视图
- Linux(Red Hat Linux 9)中关于程序的存放目录
- JS中如何定义全局变量
- 游戏服务器数据缓存和持久化中间件设计总结
- 七月工作总结
- 输出10000以内的回文素数
- Android学习之Adapter(适配器)源代码分析与观察者模式的运用(一)
- 1001 Tempter of the Bone
- 孤独的程序员,你本应更幸福
- 八月工作总结
- 形态学图像处理
- 给vs工程减少空间