4399手机游戏网爆料。由全球移动游戏联盟主办的第四届全球移动游戏大会(GMGC2015)在国家会议中心正式拉开帷幕。来自亚马逊AWS产品拓展经理庄富任先生发表了题为《AWS云服务助力游戏公司取得全球性成功》的主题演讲。
以下为庄富任的演讲全文:
庄富任:谢谢主持人的介绍,各位在场嘉宾,大家下午好!今天非常高兴有这个机会,来跟大家分享AWS中国在这个市场上怎么帮助我们的游戏开发者取得一个成功。
我想先从一个案例开始起头,在这一两年,在AWS云平台上蛮成功的案例,不晓得大家猜不到猜得到游戏公司,最小开发者开始,现在是全球卖座第一的手游。卡通农场跟部落战争完全在AWS云上面跑这个游戏。为什么选择AWS这样一个云平台,最重要的是,云的好处,应用性非常高。运营游戏,性能强大,可靠性也是游戏开发业者最关注的。接下来从很少量用户、玩家,到这么高,需要扩展性平台,所以选择AWS是很好的用平台解决方案。
可能很多人会以为AWS好像提供数据中心、虚拟机服务,其实并不尽然,如果看整个AWS云产品线来讲,我们从最底层的全球基础设施,到网络服务,然后甚至上面的计算、存储跟数据库,都有提供对应的产品,让我们的游戏开发业者可以去做,最上层有一些快速部署的工具。
整个基础设施来讲,AWS在全球一共11个大区域,欧洲、美洲、东南亚、日本,都有我们一个大区域。AWS(中国)现在业提供这样一个服务,给我们的游戏开发业者,所以可以使用中国北京区域,也可以用全球其他十个区域来部署你的游戏。
其实每个大的区域里面,我们又定义了可用区,这个可用区的定义用来干吗,因为有的时候,我们希望提高高可用性,希望在一个大区里面,有不同的可用区,可以供我们的开发者去选择,我后面会详细讲怎么样去做。主要是多了一个可用区,可以提高一个高可用性。包含好几个数据中心。所以一个可用性不止一个数据中心。全球52个CDN,可以采取AWS的CDN服务。
进去来看,东西蛮多,最底层到最上面都有。对于开发者来讲,最重要的,像游戏要选择你的职业,所以提供不同的SDK,城市语言工具,给开发者去使用。所以不用担心在这个平台上找不到适合的开发语言。
AWS上面很多初创企业,列几个,不论国内小米还是国外都在用,国内还是国外很多开发者在用AWS云平台。
为什么选择云部署你的游戏,相信这边好几个点,都是游戏开发者很关心的,怎么可以很快地扩展,定性高不高,会不会常常掉线,最主要的是,开发者都希望说,他们能够只专注于游戏开发,而把一些头疼的问题给后面的比较专业的AWS做一个处理。
所以云的好处来讲,传统方式来讲,前几天也是跟几个游戏公司去谈,要预估新游戏上线,考虑多少机器去买,可能因为某个机器突然爆增,没有办法短时间之内拿到那么多机器,这个AWS可以匹配,到底多少玩家,多少服务器需要使用,弹性化匹配。
育碧也是很大家的游戏公司,虽然它的资源很多,但是它也希望选择AWS,因为很多的东西,并不想花大量的人力,投资上买这么多,或者运维这么大的游戏服务器集群,希望能够加速游戏开发的角度。
接下来怎么样快速组建AWS云平台。我的控制平台,选择一个区域,需要部署,游戏客户主要玩家在每周选择每周区域。如果在东南亚,当然选择新加坡的区域。
选择完以后,我只需要一个可用区,EC2是我们的虚拟机,游戏代码放在上面,提供附载均衡跟数据库,基于AWS托管数据库服务。把这样架构搭建完成,等于开了一个游戏服务器。
趣加游戏是我们的一个客户,为什么选择AWS,主要现在自动化运维是一个趋势,利用云可以很快地做一个自动化运维。
其实一个工程师几乎可以管到三百多台服务器,人力运维的头疼问题。怎么去做呢?AWS提供标准API,开发者通过这个界面,拿到云上面任何资源。几个方式,如果用AWS资源,上我们的控制台,可以用编程方式,相信很多游戏开发者写脚本比较熟悉,可以用刚刚提到的很多语言都可以用脚本管理AWS上面云平台一些资源。我们有比较多样不同开发工具,都可以给开发者去使用。
当游戏玩家数量一直在增长的话,怎么样应对,需要提高可用性,然后减少档期。一个案例是,超级突击队做的是多人同时在线,第一人称设计的游戏。可以想到第一人称设计的游戏,而且多人在线,可能同时间一百万玩家,全球做同台竞技,怎么样支撑这么大的一个一百万的玩家在上面,怎么样提升高可用性。
其实架构上面很简单,刚刚我们提到,如果单纯开服,不考虑服务器,服务器挂掉就挂掉,不用担心,另外再开,但是很在乎高可用性,不希望这个游戏断线的话,可以在另外一个地方,选择另外一个可用区,就是服务器在A可用区,也会在B可用区,通过附载均衡,玩家自动倒流到这两个不同区域。某一个区域有些服务器可能有问题,玩家可能流不上去,通过负载均衡帮你倒到另外一个区域,这是自动取做的,不用人为去干预,可以做一个辅助的数据库,有人会担心,除了前端的应用服务器,数据库怎么做,我们也提供了很简单的一个数据库的部署Multi-AZ,主数据库在AZ里,另外一个数据库备份,当主数据库有问题,自动切换到另外一个数据库。
怎么做自动拓展,DevSisters,半夜玩家数量很少,在某一个时间点,突然爆发。这边可以看到,本来最低的时候,只要两台服务器,最高峰的时候,需要60台服务器。怎么做这样一个自动伸缩扩展,其实在AWS平台上很简单,Auto Scaling,设定完成,控制阀值,CPU到了某个程度,做一个横向拓展,设定10台,可能扩充20台、30台,这些自动扩展,不需要人做干预,这样一个过程是自动化的,很多可能去一些托管中心或者买实体机,很难做到自动化横向扩展,AWS云平台上都可以做自动化过程。
前面谈到的是自动扩展解决掉游戏的服务器,前端的游戏应用服务层,但是数据库也会是一个很大的平静。因为玩家数量增加,数据库在IO上是很大的评价。我们提供Cache服务,完全托管,现在支持主流的Memcached,都是相融的。
很多IO,一些游戏下载包,或者影像图片,其实都可以放在另外一个储存池,推送到前端用户,减少IO瓶颈。因为很多IO其实不需要再去从数据库拿你的数据,而是用CDN的服务推送出去。看起来有点复杂,用到AWS平台上功能,主数据库、被数据库,不同的可用区,达到高可用性。有一些数据用CDN服务做一个推送。AWS提供很多不同的服务,附载均衡、自动扩展,也有数据库服务、Cache,海量数据应用。
数据库关联性,数据库瓶颈还是写在上面,非常头疼。所以即使用到缓存,可以解决一些读的瓶颈,常读的数据拉到缓存,但是写的话,还是没有办法去解决。这个时候可以考虑用NoSQL的数据库,AWS业提供一个数据库,可以把一些数据,符合键值数据,减轻瓶颈负担。AWS比传统NoSQL数据库好处,放多少的数据到云上,不用担心数据量会爆掉,或者容量不够。自动就是一个扩展,丢多少数据,接多少数。
其实底层都是用SSD固态硬盘,做底层架构,所以响应时间非常快,都是10毫秒以内,无论读或者写,预设一个吞吐量,在我的平台上,可以预设,要求我的吞吐量、响应时间要到多少。最后不用担心故障,基础建设设计上好几个可用区,好几个不同的数据中心,所以不用担心,所有在上面的数据,都会复制到不同的可用区。所以不用担心数据会丢失,会有单点故障问题。
这边是一个实际图,如果看到使用DynamoDB,前面数据量有一些变化,响应时间都是一致性的,无论前面有多少请求,响应时间都是一致的。所以这一点特性非常重要,因为不用担心有多少前端访问量进来,都可以保持反应时间是一致的。
《水果忍者》,在传统的数据库上,没有办法满足,因为每个做这种切水果的动作,其实很简单,这样数据存储在关键数据库,那么多人同时在做这样的动作,关键数据库没有办法应付这样IO上的瓶颈,把关键数据库记录的一些动作,把签到、DB减缓IO存储。100万人或者800人,响应时间都是一致性的。
真的要支撑到上百万的用户,传统在国内开服务器,不用太担心,一台服务器可以承载几千人,但是如果现在看到一些很流行的游戏应用架构,其实就是大的区,就是大世界,玩家进来不分区域、服务器,怎么去做。其实可以看到这边,已经用到我们刚刚提到的很多AWS上面产品,前端游戏服务器,可以做自动扩展,附载均衡。这边除了数据库做了储备,提出一个功能可以做所谓的读写分明的服务。就是在不同的地方,可以有一个不同的读写分离的读的数据库。很多读的流量,就会在读的数据库去拿,所以这样的话会优化IO的吞吐量。DB或者CDN节点做分发,都可以在AWS云平台做到。
很多游戏开发者,中国有自己的区域,可以做中国游戏部署,也想到中国海外,或者中国海外的游戏公司想进中国,合适用AWS平台,变得这样全球快速部署,变得非常简单,因为做的方式很简单。游戏应用就是游戏印象,重要数据可以打Snapshot,用脚本做部署,统一的云平台,做全球扩展非常容易。