“汤姆猫”背后的上云故事
扫描二维码
随时随地手机看文章
“开始尝试云原生的时候,我们其实是有一部分担忧的,在看按照这个架构是不是能够行。但是经过两年来的验证,无论是用户的高峰期还是低谷期等等,都能够非常好的平衡性能,我们的成本也是随着用户在线的高峰和低谷进行动态伸缩,这块对成本优化有非常大的帮助,AWS云原生在自动伸缩等方面的特性很有优势。”金科文化游戏事业部支撑中心技术总监夏祥龙说。
金科文化旗下子公司Outfit7开发的“会说话的汤姆猫”系列已成为全球知名的IP,形成了一个由数十款游戏组成的游戏家族,业务覆盖欧盟、美国、中国、俄罗斯、巴西、印度等全球200多个国家和地区。目前,其App产品矩阵的全球累计下载量超过130亿人次,月活跃用户超过4.1亿,全球日活用户超过4000万,中国日活用户超过1000万。
日活四千万的汤姆猫游戏家族,用AWS云服务打造“无感”用户体验
考虑到游戏行业的特殊性,大规模的动态流量变化和场景体验被提升到了更高的优先级,对游戏平台伸缩性的挑战巨大。对于金科文化而言,如何在晚上6-8点的流量高峰期保持与流量较低时同样的系统反应速度和游戏体验,真正让用户做到对后台技术和基础设施“无感”,是在构建游戏平台时首要关注的重点。
夏祥龙介绍称,游戏发行的核心问题就是要面对用户量的暴增,用户量在高峰和低谷的时候会有数倍或者十几倍的差距,“高并发是游戏行业经常会遇到的挑战,那如何去解决呢?第一是流量的压力,第二是机器负载的压力,第三是事件的处理和相关的数据库读写的压力。在整个体系过程中,我们更多运用的是云原生的自动伸缩的功能,来对冲流量压力对我们的影响。”
2017年底,金科文化开始逐步将服务平台构建在AWS云服务之上。通过在AWS上建立一套云原生的系统架构,金科文化能够轻松满足高并发、高效率、高可用、低成本的运营需求,不管流量多大,都能够使用户体验感受一致,不受影响。综合评估利旧和学习成本,以及投资收益率之后,金科文化在构建云原生开发时并没有对已有技术架构进行较大的调整,既有的开发团队也保持了稳定。
接入云原生架构时,金科文化在用户流量层使用了Amazon ALB负载均衡服务,中间层是逻辑交互和用户行为分析,会涉及API的操作,根据请求进行并发量高低自动伸缩,之后通过Amazon Kinesis落地,对游戏登录、支付等事件做出分析判断,导入Kinesis队列,最终以数据仓库的形式存储在Amazon S3,便于日常查询和数据分析及优化。
“起初,我们自建了一套‘麒麟’的架构,在这套架构里面进行实时性和分析时的评级。前段时间,因为整体的效率跟不上需求,结合我们的调研,我们选择切换到了AWS最新的Amazon Redshift。”夏祥龙说。从EMR切换到Redshift,运营人员对用户数据的判断时间从半小时缩减到了5分钟以内。
利用云原生架构,金科文化大幅缩减了业务上线时间,并且在架构扩展时可以选择模块化的配置方式,更加高效。此前,金科文化曾在物理服务器上选用传统数据库,尽管其对MySQL等进行了多次优化,但受限于性能瓶颈,达不到业务所需的要求。后来,该公司选择了能够无限扩容的Amazon DynamoDB,并且在扩容时不需要停机维护即可根据设计流量随时按照读写数、使用率进行增减。
随着用户体验的多元化需求逐渐延伸,计算、网络、存储等服务的性能都会直接影响游戏效果,例如在网络延时方面,AWS的Amazon CloudFront就提供了很好的支持。为了服务遍布全球的用户,金科文化在全球建立了同样架构的两个游戏服务平台:国内用户平台使用西云数据运营的AWS中国(宁夏)区域,海外用户平台使用AWS亚太(新加坡)区域,为世界各地的用户提供更加顺畅、更低延迟的服务。由于采用了全球的一致性架构,开发和运维不再需要投入额外的精力,在数据合规方面也可以满足各个国家或地区的要求。
借助云原生架构的开发运维一体化、微服务、敏捷基础设施等特性,客户可以专注于业务本身的创新,而不用去担心运行、维护、安全、可用性等问题,后者会由AWS这样的云服务商来负责。例如在运维过程中,可以使用Amazon CloudWatch来监控CPU、内存、读写等数据,使用者所要做的就是应用配置。更重要的是,AWS的各类云服务之间也有着很好的协同效应,经过简便的开发就能将不同模块融合到一起,解决架构和业务流程中的棘手难题。
举例来说,通过采用Amazon EC2弹性计算服务、Amazon EC2 Auto Scaling弹性伸缩服务、ALB负载均衡服务和Amazon DynamoDB键/值和文档数据库服务,金科文化的游戏平台实现了7倍的自动伸缩和负载均衡。金科文化还使用Amazon Redshift托管式数据仓库替代了原有架构中开源的解决方案Apache Kylin,将部署和运维开支成本降低超过70%。
“AWS为我们的架构师团队提供了极大的支持。”夏祥龙说,“从最开始的选型到架构调整,再到新产品的使用,这一过程中会有或多或少的技术难点,AWS会及时提供一些现场的沟通和支持,使得我们整个的合作非常顺畅,没有在合作上遇到过什么问题。”