没事去国内几个主要的CDN商网站看了看各个的CDN产品说明和解决方案,基本上大同小异(其实连小异我都没怎么找到)。唯一让我惊讶的是蓝汛Chinacache——蓝汛在自己网站上写着“游戏应用加速”,内容如下:
游戏运营商只需要从一点接入ChinaCache的CDN网络,通过ChinaCache的应用加速服务,不论玩家在国内或者国外,无论何时何地,从任何电信运营商接入,玩家的客户端都能够与游戏运营商的服务器之间高速传递游戏数据,从而保证中国南北甚至全球玩家都可以畅快淋漓的参与即时游戏;
图中的CCR,百度了一下,好像是蓝汛的自动调整流量导向的监控管理平台。
这个图画的不明不白的,对我理解其加速实在是有害无益——话说回来,似乎所有公司的公开解决方案都是这么云里雾里——不如自己去假设:
网游的架构,大体应该是客户端的动作,按照代码生成一个.dat临时文件,并随时上传到服务器端;服务器端定时以及当客户端主动保存时,将该临时文件的数据记录进数据库中存储;等到客户端重新读档(或者掉线回档)时,从数据库中读取最近一次保存的数据。
【以上说法来自我的室友,也是我公司游戏部的同事】
这是上下两个过程,对于往下走的读档流程来说,实在没什么太大的加速价值,因为它是个一锤子买卖(除非是搞成分布式数据库,但这跟CDN什么关系?);对于往上走的存档流程来说,倒是有些地方可以想想?
关键就在这个.dat临时文件上。我们完全可以让cache服务器缓存这些文件,然后定时上传到上级节点或者源站;还需要开发一个触发器,以便客户端主动存档使用。
不过这些想法,都是建立在尽量传统的CDN理解即内容分发上。而蓝汛一向号称自己有独一无二的动态应用加速手段,从网上找到的GAD白皮书来看,核心还是路由优化而已。恐怕游戏应用加速,也逃脱不了这个范围。 在边写这篇笔记边百度的时候,发现一篇论文《一种CDN中的动态数据存储方案——UbDP》,打算想办法下载全文来看看,其摘要如下:“ CDN对于动态Web应用的加速通常采用数据缓存或复制技术。针对论坛、博客服务提供商等为注册用户提供个人信息发布平台的网站,提出了一种基于用户的数据分割方法:将数据按所属注册用户进行分割,分布到离该用户最近的数据库系统中。将数据库UID操作分散到多个数据库系统,消除了单个数据库系统的I/O瓶颈。 ” 相信不会让人失望。