《龙之谷》手游服务器数据管理
来源:互联网 发布:java难点在哪 编辑:程序博客网 时间:2024/05/01 23:10
昨天听同事聊起龙之谷的服务端架构,有些新颖和值得学习的地方,姑且在此总结,加深下理解,也算是做个笔记。
架构
龙之谷的服务端架构主要的特点就是将数据分块。服务端在设计数据时,按照不同功能将数据分块,比如:玩家属性,技能,帮派,排行块等,每个模块就是一个内存对象——keeper,这样就能按功能模块来管理数据。
keeper是如何管理数据的呢?在服务器启动时,所有keeper都加载到内存。在keeper的内部维护一个字典,这个字典以玩家id(uid)作为key,该模块的数据作为value。初始化为空,当使用keeper时传入uid,keeper先检测uid是否存字典中,如果存在就直接取数据,如果不存在,则去查询数据库。
keeper还有一个作用就是优化存盘。每个字典中再维护一个变量,标记当前数据是否发生改变,存盘时只存发生改变的的数据。同时,keeper的字典中会设置一个上限,在内存中维持固定数量的玩家数据,当玩家数据达到上限后,使用LRU算法,替换到最久未使用的玩家数据。
优缺点
优点
- 先说最大的优点,就是可以通过keeper直接操作离线玩家的数据
- 解耦合,玩家的数据单独存在,不需要一次性将玩家的数据全部加载进内存
缺点
- 需要将数据分块,增加了逻辑复杂度
- 当玩家数据不在内存中时,需要通过不同的keeper多次,分多次去读数据库
0 0
- 《龙之谷》手游服务器数据管理
- SLG手游Java服务器数据管理方案
- SLG手游Java服务器的设计与开发——数据管理
- 手游服务器之数据IO进化
- 手游服务器架构
- 手游服务器结构
- 手游服务器架构
- 游戏服务器之角色数据管理工具(python版)
- 话说手游棋牌服务器
- DB2 数据管理服务器
- 手游服务器技术的选择
- 手游服务器常用架构图
- 手游服务器开发技术详解
- 手游服务器常用架构图
- 【Game】手游服务器开发技术详解
- 手游服务器开发技术详解
- 手游服务器开发技术详解
- 手游服务器开发技术详解
- [Contest] IOI2011 day1 题目汇总
- 操作系统hosts文件
- 从斜边之长为L的一切直角三角形中,求有最大周长的直角三角形.(多元函数的极值及其求法)
- 正则表达式匹配
- 几个常用的文本处理shell 命令:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk
- 《龙之谷》手游服务器数据管理
- 果园里的树
- String深拷贝
- LightOJ NO.1094 Farthest Nodes in a Tree(树的直径,链式前向星+搜索)
- error: file '/boot/grub/i386-pc/normal.mod' not found解决方案
- Java基础(容易忽略的java细节)
- 2016SDAU编程练习二1006
- 2016手游设计分辨率推荐
- 改变软键盘Enter键功能