原文地址:服务器又宕机了,怎么办?

理想情况

对于一般的MMOG来说,玩家在进入游戏时会从数据库中将该玩家的所有相关数据读到内存,以便快速的进行游戏逻辑的处理,而在玩家下线时再将数据的改动存回数据库。如果程序开发完全基于这种理想情况,不考虑程序、服务器宕机的现实风险,那么一旦发生故障将导致用户数据大量丢失的灾难性后果。

现实困难

要将游戏内的所有场景、人物等数据恢复到宕机那个时刻的状态在技术层面基本无法实现,即使想尽办法实现代价也非常巨大。

应对措施

1. 为玩家数据实现定时存盘的机制,就像现在大多数的单机游戏一样,AutoSave。比如,每5分钟自动为玩家存一次盘,这样就可以使得回档的最大损失控制在5分钟以内。

2. 对于一些重要数据的变动,比如玩家花大量游戏货币购买了一件贵重的武器装备,这时可将玩家数据立即做一次存盘操作,这也将有效的减少玩家的重大损失。

性能优化

上述应对措施虽然可以有效解决宕机的问题,但却会让数据库吃不消,需要进一步优化方案:在中间加一层代理做缓冲,姑且称这一层代理为数据库代理服务器,它所要完成的工作是从场景进程收集玩家的定时存盘请求数据,再以一个低一点的频率写入到数据库。

听起来这又像是一个换汤不换药的做法,写入数据库的时间间隔还是变长了。但实际上在前面我们就曾经描述过,如果服务器进程不会出现意外的宕机,玩家数据只需要在他上线时读取,在他下线时写入即可,中间添加的这些定时存盘过程完全只是为了防范宕机回档所造成的巨大损失。

PS: 不用将所有定时存盘数据都更新到游戏数据库中,只需要处理5分钟内的增量数据即可,而且定时存盘数据可以以增量的方式追加到队列文件中,这样基本不会影响游戏程序的性能。

转载于:https://www.cnblogs.com/edwardlost/archive/2011/04/11/2012237.html

游戏服务器宕机应对措施相关推荐

  1. 谷歌和甲骨文的服务器宕机,如何解决

    由于创纪录的高温继续使欧洲升温,谷歌和甲骨文在英国的数据中被"热"崩了,由于数据中心无法承受热量,选择的机器被关闭以防止长期损坏,导致一些资源.服务和虚拟机变得不可用,不幸的网站被 ...

  2. 如何应对缓存服务器宕机的情况

    假如所有缓存服务器都宕机,而且不能很快恢复,并且假设数据库服务器能够支撑,在代码中如何应对这样的情况? 之前的做法是在读缓存的地方捕获异常并写入日志,然后直接从数据库读取数据:在写缓存的地方捕获异常并 ...

  3. 如何应对java服务器宕机_代码中如何应对缓存服务器宕机的情况

    今天在演练这样一个场景--假如所有缓存服务器都宕机,而且不能很快恢复,并且假设数据库服务器能够支撑,在代码中如何应对这样的情况? 之前的做法是在读缓存的地方捕获异常并写入日志,然后直接从数据库读取数据 ...

  4. 从春运分析服务器宕机原因

    春运,这一号称人类历史上规模最大的周期性人类大迁徙,2011年如期而至,在从1月19日开始为期40天左右的时间内,铁道部预计客流量将达28.5亿人次,快要把我国大众运个来回了.如此浩大的客流,造就了一 ...

  5. 网站服务器宕机,B站服务器宕机惊动上海消防,官微致歉

    7月13日晚间,"b站崩了"冲上微博热搜榜第三位.消息称,B站官网疑似出现服务器宕机事故,页面提示称"非常抱歉,该页面暂时无法访问". 7月14日凌晨2点,哔哩 ...

  6. 谷歌公布 12 月 14 日服务器宕机的主要技术原因

    谷歌技术团队于 18 日发布了谷歌 12.14 服务器宕机事件的完整报告. 问题摘要 2020 年 12 月 14 日星期一,需要谷歌 OAuth 访问且面向客户的谷歌服务出现死机,并持续了 47 分 ...

  7. 从邮件服务器宕机谈企业邮箱选型之路

    [文章摘要]据报道,美国当地时间3月13日17 点30分左右,Outlook和Hotmail的用户开始反映无法登录邮箱,直至美国时间14日早上7点,历时17小时,部分用户的这两项服务才恢复正常.对于个 ...

  8. 服务器高并发处理/服务器宕机了怎么处理?

    服务器高并发处理/服务器宕机了怎么处理? 高并发问题是大部分服务器都经历过的,由于资源的有限性,其同时处理请求的能力自然也有限制.当高并发出现时,服务端的处理和响应速度会大幅降低,更严重的会使服务器崩 ...

  9. 服务器宕机原因及解决方法

    对于刚进入互联网的人来说,对于很多的名词是比较陌生的,其中,在服务器托管租用行业,有一个名词叫做"宕机",大家听的比较多,但是很多人不知道具体是什么意思. 宕机也可以称为" ...

最新文章

  1. ROC和AUC也不是评估机器学习性能的金标准
  2. c语言的44种运算符,C语言重要知识点总结【9】:C语言运算符(详解)
  3. 糍粑大叔的独游之旅-u3d实现弹出菜单(上)-动态列表
  4. [设想]增加比较的多元运算符
  5. 正则表达式学习笔记系列----1
  6. Operation not applicable
  7. MATLAB_批量修改文件名称
  8. 对比企业邮箱,使用企业邮箱有哪些好处?
  9. 听风辨器,神功护体——IT运维人员的九阳神功(中)
  10. Uber 时序数据库M3DB初探
  11. 怎样判断安装的mysql是社区版还是企业版
  12. Systrace 流畅性实战 2 :案例分析: MIUI 桌面滑动卡顿分析
  13. Flink SQL Print Connector
  14. linux开启telnet服务(总结)
  15. 模型驱动式架构(MDA)技术简介
  16. springbbot运行无法编译成功,找不到jar包报错:Error:(3, 46) java: 程序包org.springframework.context.annotation不存在
  17. 详解以太网诊断DoIP
  18. 【新浪科技】我爱应用
  19. 什么是文案?介绍基本知识和写作技巧
  20. pytorch框架(计算机视觉)一.数据增强

热门文章

  1. 狄慧201771010104《面向对象程序设计(java)》第八周学习总结
  2. vs2017 js cordova + dotnet core 开发app
  3. 《精通Android 5 多媒体开发》——第6章,第6.1节视频系统结构
  4. asp.net mvc 依赖缓存启动项配置
  5. javaEE异常摘要——更换工作区相同tomcat当部署在同一个项目疑难解答
  6. VS code前端配置
  7. 问题 J: Sequence Problem (II) : Array Practice
  8. java 乘法 位移_Java:移位实现的乘除法
  9. c mysql查询年月日_mysql查询指定日期时间内的sql语句及原理
  10. 抽奖送福利|8大福利任性送,快来抽它