昨天听同事聊起龙之谷的服务端架构,有些新颖和值得学习的地方,姑且在此总结,加深下理解,也算是做个笔记。

架构

龙之谷的服务端架构主要的特点就是将数据分块。服务端在设计数据时,按照不同功能将数据分块,比如:玩家属性,技能,帮派,排行块等,每个模块就是一个内存对象——keeper,这样就能按功能模块来管理数据。

keeper是如何管理数据的呢?在服务器启动时,所有keeper都加载到内存。在keeper的内部维护一个字典,这个字典以玩家id(uid)作为key,该模块的数据作为value。初始化为空,当使用keeper时传入uid,keeper先检测uid是否存字典中,如果存在就直接取数据,如果不存在,则去查询数据库。

keeper还有一个作用就是优化存盘。每个字典中再维护一个变量,标记当前数据是否发生改变,存盘时只存发生改变的的数据。同时,keeper的字典中会设置一个上限,在内存中维持固定数量的玩家数据,当玩家数据达到上限后,使用LRU算法,替换到最久未使用的玩家数据。

优缺点

优点

  • 先说最大的优点,就是可以通过keeper直接操作离线玩家的数据
  • 解耦合,玩家的数据单独存在,不需要一次性将玩家的数据全部加载进内存

缺点

  • 需要将数据分块,增加了逻辑复杂度
  • 当玩家数据不在内存中时,需要通过不同的keeper多次,分多次去读数据库

《龙之谷》手游服务器数据管理相关推荐

  1. 龙之谷账号所在服务器,龙之谷手游 服务器数据互通公告!

    亲爱的冒险家: 为了优化游戏体验,让冒险家们可以更好地体验游戏.9月15日10:00-18:00将分时间段对部分区服分别进行数据互通更新操作,如未及时完成,将会进行延后开服处理. 为了感谢各位冒险家对 ...

  2. android和ios龙之谷,龙之谷手游iOS和安卓能一起玩吗 服务器数据互通吗

    龙之谷手游iOS和安卓能一起玩吗?iOS和安卓可以在同一个服务器吗?游戏有数据互通吗?小编来为大家一一解答. 根据官方介绍,龙之谷手游暂未开通数据互通的服务器,iOS与安卓还不能在同一个服务器一起玩! ...

  3. 阻击外挂——《龙之谷手游》安全测试的那点事

    作者:sheldon,腾讯游戏漏洞测试高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/302.html ...

  4. 《龙之谷手游》腾讯代理到期,6月1日正式关服

    本文转载自IT之家,IT之家3月22日消息 腾讯今日上午宣布,由于与<龙之谷手游>开发商的代理协议即将到期,将于 2021 年 6 月 1 日 11 点正式停止<龙之谷手游>在 ...

  5. java手游+纹章,龙之谷手游纹章怎么获得 纹章获取途径一览

    在龙之谷手游里,纹章能够为玩家带来实力上的大量提升.那么,对于玩家而言,纹章该如何获取呢,有哪些获取途径呢,接下来就让我们详细的了解一番吧. 属性纹章 32级时候会开启一个新活动,每天打2轮,每轮5关 ...

  6. 谈谈龙之谷手游兼容测试的一百个坑

    原文链接:http://wetest.qq.com/lab/view/312.html 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 一.项目背景 1. 高价值IP 龙之谷 ,一款优 ...

  7. 龙之谷冰龙linux手工服务端,【龙之谷手游服务端】3D手游冰龙商业版VM虚拟机一键安装即玩游戏客户端...

    [龙之谷手游服务端]3D手游冰龙商业版VM虚拟机一键安装即玩游戏客户端 平衡了精灵抽奖 潘多拉盒子的数据 调整了巢穴不爆装备的问题 金宝箱奖励整套装备 修改巢穴.深渊次数不减 并添加快速匹配人机(10 ...

  8. java手游+纹章,大神教你玩纹章 龙之谷手游纹章搭配原理剖析

    在龙之谷手游里,纹章的搭配将会使得玩家在属性和实力上得到有效地提升.那么,对于玩家而言纹章的搭配原理是什么呢,如何才能够使得纹章的搭配利益最大化呢,接下来就让我们详细的了解一番吧. 纹章一共是11种, ...

  9. 谈谈龙之谷手游兼容测试的一百个坑 1

    原文链接:http://wetest.qq.com/lab/view/312.html 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 一.项目背景 1. 高价值IP 龙之谷 ,一款优 ...

  10. 龙之谷手游WebVR技术分享

    目录: 一.项目体验 1.1.项目简介 1.2.功能介绍 1.3.游戏体验 二.技术方案 2.1.为什么使用WebVR 2.2.常用的WebVR解决方案 2.2.1.Mozilla的A-Frame方案 ...

最新文章

  1. Centos-6 编译安装实现LAMP,wordpress最新版
  2. Android 自定义 spinner (背景、字体颜色)
  3. argparse库 学习记录
  4. IT行业: 嵌入式工程师的进阶之路
  5. 机器学习--线性回归、逻辑回归
  6. windows下共享文件夹在Linux下打开
  7. 【 Grey Hack 】记一次被黑经历
  8. 二十二、PHP框架Laravel学习笔记——集合的使用
  9. 查看端口占用情况lsof,并关闭对应进程kill
  10. 测试开发字节跳动(二面),我被面试官按在地上摩擦!
  11. iPhone已停用,请连接iTunes
  12. AD7606系列ADC的相关内容
  13. C++:vector的push_back()与emplace_back()
  14. jude(java建模软件)_JUDE(JAVA建模软件)
  15. 音视频常见术语和接口收集
  16. 1059 习题4-12 求建筑物高度
  17. 周鸿祎一进场,造车新势力格局应声变了
  18. 2015年蓝桥杯预赛第二题星系炸弹
  19. 简单的视频软件动画字幕效果对比
  20. 关于 Data Lake 的概念、架构与应用场景介绍

热门文章

  1. 手写SSH2服务器连接池
  2. adb工具的使用方法详解
  3. springboot+vue+elementUI 公司财务固定资产管理系统#毕业设计
  4. wps阶梯表格怎么做?wps阶梯表格制作教程
  5. 论文特色自我评价内容结构
  6. 学习AngularJs:Directive指令用法
  7. python语言的开题报告怎么写_开题报告怎么写
  8. [UOJ#132][BZOJ4200][luogu_P2304][NOI2015]小园丁与老司机
  9. 007 定位明文封包call
  10. 计算机c语言与交通工程论文,交通仿真技术在道路交通工程中的应用研究