分享思路: 基于数据方舟(UCLOUD)构建高数据安全的游戏服务器(KBE+cocos2dx)

本文将和大家分享游戏服务器的时光机的体验,感受黑魔法-来自UCLOUD的数据方舟. 游戏服务器还可以这么玩。

Let me show you  how to setup 100% living game server on UCLOUD with UdataArk , enjoy the black magic in cloud world.

序.

单机手游一片汪洋, 唯有(弱) 联网还有一线生机, 一提到联网游戏那就需要个服务器啊, 而对于很多小团队, 运维注定是个头疼的事,其中数据安全尤为重要。初期可以用一些轻量的云服务, 但有些游戏类型是无法逃避开发游戏服务器的问题,比如MMO FPS, 早晚也要开发自己的游戏服务器。所以一直在关注这个服务器领域, 探索如何更合理的利用现有的资源解决实际的需求, 以便能突破现有的瓶颈 作出好的游戏产品。分身乏术啊.

11.23日有幸拿到了 UCLOUD 提供的数据方舟的内测邀请 连接。正好结合自己的需求点来跑跑看, 看看这个东东能解决实际开发中的什么需求.

正文.

2015-11-25 at 4.12 AM

 数据方舟是什么呢?  数据方舟简单说就是提供了对服务器的数据进行热备份的机制,而且是以秒为单位的,自动提供没有任何额外的开销和操作。很强大啊, 下面就来展示一下我搭建的细节.

一、首先是搭配服务器配置以及开启数据方舟功能. 如图.

ucloud_datatest_1

 基本和常规的云服务差不多. 选配置,支付就好了.

小提示:  付费方式总体上还算是很灵活的, 支持按月,按年(可以省2个月的钱), 按需( 按实际使用付费, 如果被ddos了 流量费也很肉疼吧 )

注意上面的图: 开启数据方舟是在最后确认之前那个界面选点击开启的checkbox。

二、开始测试.

开始之前还是想罗嗦几句, 游戏服务器的数据有多重要, 估计会出乎你的意料.

一般人都习惯了重装操作系统, 觉得系统慢了就ghost一下, 反正也没什么重要数据. 最多会有个意识 备份一下自己的文档数据什么的. 而游戏数据则是一个游戏产品的重中之重, 游戏玩家的数据是玩家最看重的, “辛辛苦苦几十年, 一夜回到解放前”  想必大家作为wow的玩家也是深有体会的. “卡卡更健康”  好容易刷个副本, 该拾取装备了, 服务器掉线了.. , 坑爹的是还有了副本进度.  要么就是被回档了, 熬了几个CD攒了很久的DKP 终于拼了好人品ROLL 到心仪的装备, 结果被回档了.  对于玩家的心灵的伤害, 感同身受啊.

而服务器宕机 停机维护, 无论主动还是被动的都需要有备份数据做保证。通常运维的同学会做好mysql数据备份 定时备份. 实际操作起来还是比较费时费力的。一不小心 drop database的有没有. 提起来都是眼泪啊。以下情况会需要备份的数据。

  1. 作为回档时使用。有多接近的有效数据就意味着可以最小化玩家的损失, 最大化玩家的满意度。
  2. 服务器升级时,需要有效的备份数据 防止升级失败, 数据错误等问题。
  3. 比对玩家异常行为也需要持续的备份数据.
  4. 快速开服,热切换服务器什么的也都需要。

1. 准备工作:先配置一下KBE的服务器环境. 了解KBE是什么点这里.  这里配置不是重点. 有空我单独写一篇

客户端就用我做的基于kbengine-cocos2dx 的一个小demo. 如图.

2015-11-26 at 12.09 AM

 

2. 安装好之后, 可以浏览查看到控制面板的备份数据,

第一行是当天的秒级别的备份数据.

后面是每天按小时的增量 以及前两日的一天的全量数据.

最下面有两个我手动备份数据. 可见数据方舟还是很强大的, 增量 全量 这些全都支持了.  我并没有配置mysql的备份机制.

ucloud_backupview_1

 

实战到了:  我开着服务器跑了3天来截取数据.  并进行了以下的测试. (视频为证)

1. 模拟宕机回档.

开服务器, 然后用客户端来连接, 创建新帐号. 此时立刻停掉服务器. 然后再尝试开机恢复到之前的时间点. 操作起来,发现时间点不好选择. 恢复之后, 刚才新建的帐号还在.  再重新恢复一次,  开机后, 帐号数据这回没有了.  真是太高级了。

03:17:33进行如下操作: 客户端登录后创建帐号, 手备份一次数据, 关机.

使用秒恢复功能,恢复到 03:16:33 的数据, 帐号数据还在 不符合要求.(目标是回档)

继续回退 03:15:33 进行恢复数据, 这回OK了, 回档成功。看视频前半部分.

注: 这里我第一次选择了1分钟为单位测试,实际上还可以更精准. 第二天我又补测了一次. 感兴趣的可以看一下:  补刀 数据方舟回档测试视频 1秒和10秒之间的故事 这里.    1秒之前帐号没了,10秒之后帐号又回来了. 


2015-11-26 at 12.12 AM2015-11-26 at 12.14 AM 2015-11-26 at 12.15 AM2015-11-26 at 12.15 2 AM

2. 破坏性操作,

模拟服务器被黑. 删掉游戏服务器的mysql数据库.   然后选择操作之前的时间点来恢复.  数据又回来了…

再直接格式化掉服务器. 开不了机了?  一样好使…

2015-11-26 at 12.16 AM

 

2015-11-26 at 12.18 AM

3. 模拟压力测试后清理数据 恢复纯净数据. 同样也能很轻松就能恢复到安装后的初始状态, 这样真的很方便做删档测试。只需要点几下鼠标,大概10分钟左右就恢复了。

最后上个视频. 看到更清晰一些.

不得不说,数据方舟真是太赞了,可以节省我们很多时间。

人和动物最大的区别是什么? 就是(思考)使用(制造)工具。就像数据方舟这种为解决实际问题而生,极大的提高了工作效率。save time, save young. 我们是时候考虑更合理的运用这些现有的轮子解决我们的实际问题了, 不应该再苦B的加来加去的加不完的班。

其实是有个小段子的, 曾经有一次做封测, 新来的运维就那么一下子把数据库给咔嚓了, 结果数据只能恢复到上周的备份, 一大群玩家数据回档啊….测试数据也没了, 让很嚣张的运营团队低调了好一阵子。如果当初有数据方舟这么厉害的工具, 也就很轻松的恢复数据了.

不是每个人都擅长服务器的运维工作,对于小团队开发者, 时间变得更加昂贵, 所以如果有合适的方案解决问题, 换来更多的时间专心搞好游戏产品本身, 是最好不过的了。做自己擅长的事才能让自己创造的价值最大化, 而未来一定会呈现这种格局, 更加精细的专业化分工和协作。

强大归强大, 还是要再吐槽一下, 期望UCLOUD能再接再厉 让数据方舟(们 ,游戏服务器一揽子方案有没有? ) 更强大.  

1. 正确的时间的选择真是头疼…

        不像Mac的 TimeMachine 可以有浏览方式, 可以根据查看哪些文件修改来决定进行数据恢复. 停机恢复开机验证 不对再关 再开 也挺费时间的是吧。如果各位有好的方法还请告知. 

2. 数据恢复必须要关机..

一关机服务器的现场环境就破坏了.  如果像VMware那种可以建快照就好了. 直接可以启动恢复成一模一样的现场。期待啊. 这样可以很方便的排查一些棘手的BUG. 反复的测试和验证 而又不会破坏测试环境.

3. 不会停止的数据方舟.

如果可以手动暂停就好了, 可以保留足够的历史数据, 不用担心折腾完发现需要使用的历史数据已经没有了(方舟保存的备份记录是有限的 如果一直开着 老数据会不断被丢弃).

4. 更复杂的场景期待解决方案,

尽管大部分情况下, 只要恢复最近的数据既可以了.  但是游戏数据比较复杂, 比如玩家充值, 然后购买消费了 需要对账何时.  有未落地的临时数据等等.   还不光是备份能解决的问题,有时是发现了游戏数据错误, 需要回滚部分数据 而不是全部.  所以除了使用这种云技术, 还得考虑合理的数据处理的机制。

最后,  如果觉得还算有点收获,就给俺点个赞啥的. 顺便有没有搞游戏的或者对开源项目感兴趣以及想学KBE的 cocos unity  unreal的 来CVP找我, 一起搞啊。 如果对UCLOUD感兴趣了, 可以注册个帐号试用一下, 这有个代金券兑换码送上 ( 1e55bfcc5aa78a 100元.适合开发App或游戏产品的小团队以及个人) 

本文出自 “小糊涂的超级BLOG” 博客,请务必保留此出处 http://www.chenlong.me/?p=1584460

延展阅读:

补刀回档测试: 1秒和10秒的故事.

UCLOUD 数据方舟官网.   文档地址

KBEngine-cocos2dx 项目地址1 . demo地址2

CVP是什么:  http://cvp.cocos.com/

cocos引擎. http://www.cocos.com/

Read More