网站首页 > 开源技术 正文
从事游戏服务器开发10多年了,经历过大大小小五六款游戏,谈得上成功游戏的却是没有。
心血来潮,想把这么多年的服务器的开发经历写出来,给自己一个总结,给后来人一个参考,水平有限口下留情。
本系列以中小型游戏服务器作为例子。
游戏服务器按层次分可以分为:
数据库层;网络层;业务层;GM后台。
按功能可以分为:
网关进程;逻辑进程;全局进程;路由进程。
下面展开来说:
数据库层:
顾名思义,数据库层就是用来存储数据用的,包括游戏数据和日志数据,游戏数据比如角色自身的数据(装备,属性等)、全局数据(帮派,排行榜等)。
日志数据是为了运营查询方便而存储的一些角色行为,比如角色注册,元宝道具流水,留存,充值等。
这里面涉及到数据库选择,数据存储策略,数据备份策略,数据缓存策略,这里列一下通常的做法。
1.数据库选择:
游戏数据:可选的有MySQL、MongoDB、Redis、SSDB,本人比较偏向SSDB,因为占用内存少,自带缓存功能,读写速度也不错,缺点是没有binlog回滚功能。
日志数据:为了联合查询方便,通常选用MySQL作为存储数据库。
2.数据存储策略:
游戏数据包括角色数据和全局数据。
角色数据:角色登录的时候从数据库中加载到内存,然后定时保存(通常5分钟左右)游戏过程中修改过的数据(脏数据)。
全局数据:游戏启动的时候全部加载进内存,也是定时保存游戏过程中修改过的数据。
通常做法:数据按不同模块以key value方式存储到数据库,key为对应模块的名字,value为将模块数据打包成json格式后的json数据。
3.数据备份策略:
游戏数据:
选项1:定时用数据库备份工具热备份出来放到一个安全的地方,比如备份机器,或者挂载个硬盘上去(云服务器都有这个功能)。
选项2:数据库做主从库同步。
日志数据:同上。
数据库层篇完结。
猜你喜欢
- 2024-10-05 2小时构建IP代理池(2小时构建ip代理池是什么)
- 2024-10-05 设计本地动态代理IP池,究竟需要如何操作?
- 2024-10-05 你还在认为只要学会 requests 就可以抛弃原配 urllib 了,太年轻
- 2024-10-05 国产的开源数据库——GitHub 热点速览 Vol.52
- 2024-10-05 2024最新化学物质毒理性数据库汇总
- 2024-10-05 用好学习排序 (LTR) ,资讯信息流推荐效果翻倍
- 2024-06-27 程序员常用的开发教程,免费的就问你要不要?
- 2024-06-27 达观数据:用好学习排序 (LTR) ,资讯信息流推荐效果翻倍
- 2024-06-27 Redis 混合存储最佳实践指南
- 2024-06-27 备份软件关键特性详细介绍
你 发表评论:
欢迎- 最近发表
-
- 后端服务太慢?试试这 7 招(后端 服务端 区别)
- 做一个适合二次开发的低代码平台,把程序员从curd中解脱出来-1
- Caffeine缓存 最快缓存 内存缓存(caffeine缓存使用)
- Java性能优化的10大策略(java性能调优从哪几个方面入手)
- New Balance M576PGT 全新配色设计
- x-cmd pkg | qrencode - 二维码生成工具
- 平和精英抽奖概率是多少 平和精英抽奖物品一览
- x-cmd pkg | tmux - 开源终端多路复用器(terminal multiplexer)
- 漫威官方App中文版上线:全站漫画限时免费
- macOS Monterey 12.7.4 (21H1123) 正式版发布,ISO、IPSW、PKG 下载
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)