在举国哀悼之日,我仅技术角度分析开心网暂停游戏后恢复存在的问题
今天是悲伤的一天,收到了国务院最高文件通知,所有娱乐项目几乎全部暂停,自然包括了开心网内大部分的游戏。
于是我非常有兴致的测试了一下,果然,到了今天凌晨12点,开心餐厅、开心农场等游戏已经停止了。
开心网(或者说大部分SNS游戏) 都是基于时间的。比如开心餐厅,炒一个菜12小时,之后才能收。这基本上就是SNS游戏的模式了。那么从数据库角度,必然在每个活动后面设置一个enddate(终止时间)。
当客户端运行的时候,首先读取这个enddate,然后再根据客户端的时间脉冲虚假的显示倒计时功能。
当用户尝试点击操作,如果客户端时间没有到,那么直接返回错误提示(这个是基本的缓冲了);如果客户端时间到了,那么会读取数据库的enddate,判断之后操作。
到目前,我不相信还有其他的更加合理的设计思路(如果说记录开始时间和跨度,那么本质也是一样的,而且导致了后期操作需要多执行一次运算得到enddate,我相信没有设计师会用这种设计。)
我大胆假设一次
现在我想假设一下,我认为开心网的的游戏恢复后,大部分的活动全部出现超时现象。比如开心餐厅的炒菜,当游戏恢复后,玩家进入游戏,会发现所有食品全部过期了腐烂了;种菜也是;所有菜都成熟了。
我个人觉得,开心网的工程师们不会去实际修改游戏中的enddate,不会延期24小时。因为这基本上要在百万千万级别的数据中执行一次update。而且一旦这种人为的非正常逻辑的操作失败,损失是更加恐怖的。
如果我假设对了,那么现在开心网等网络游戏工程师们,要好好思考一下框架的脆弱性了。
2010-04-23 零时最新报告!我的猜测准确拉!
有图有真相!
所有食物全部腐烂了。证明了我的猜测。