易研启航网

易研启航网

Serverless 极致弹性解构在线游戏行业痛点

admin 196 8

简介:本文将通过剖析一个个具体的场景案例,以期望给相关的游戏开发同学带来共鸣,同时也希望能给非游戏行业的同学带来一些启发。

一、前言

快速迭代,全球部署

快速迭代是游戏行业的通用需求,包括开发效率、运维效率、架构解耦;同时游戏可能也会出海,所以也需要海外部署或全球部署战略。

高并发、高弹性

每个游戏上线时都会经历新开服、运营拉新等阶段,游戏本身也有日常峰谷,再加上偶尔的活动运营,也会产生峰值,因此在游戏行业高并发高弹性也是一个通用需求。

稳定、可靠、安全

要保证游戏的公平性和用户的玩家体验,防止作弊,所以需要保证游戏的稳定可靠与安全。

数据、运维、成本控制

游戏上线后,通过日志收集数据对用户行为进行分析,根据分析结果针对不同的玩家实施不同的运维策略,将运营重点放在中间的摇摆玩家上,从而做到精准定位、控制成本。

2.认识函数计算

下文将要介绍的案例主要与函数计算相关,因此在此先对阿里云Serverless产品——函数计算做一下简单介绍。

专注业务代码

如上图所示,对于游戏开发者来说,使用函数计算,就只需要选择一个你最擅长的代码,编写这段代码,上传到计算平台,就可以完成开发任务。之后可以通过API/SDK调用这个函数,也可以通过云产品事件源去触发函数。

这里单独介绍一下“云产品事件源触发函数”。除了主动触发函数,还可以用云产品来触发。比如使用阿里云的对象存储OSS,上传一个zip包到OSSBucket的某个目录,希望上传之后可以自动触发一个函数,然后这个函数可以把zip包自动进行解压,云产品事件源触发就可以实现这种效果。另外还有其他很多事件源,比如日志的事件源、MNS消息事件源、定时触发事件源等。

100代码量

100ms极致弹性

如果触发函数,同时过来10个、100个、1000个甚至1万个请求都不用担心,函数计算会百毫秒级弹出执行环境,每个执行环境去执行函数逻辑代码,再把函数执行的结果返回,帮助在线业务应对各种突发流量。

100%资源利用率

在计费方面,函数计算是按执行环境的内存和执行时间计费,计费粒度可达毫秒级,只为请求产生的资源消耗买单,资源利用率达100%,降低成本。

二、Serverless游戏场景实践案例

1.高弹性战斗结算业务

以SLG游戏或者回合制游戏场景为例,一场战斗结束后,为了用户体验,客户端需要先行结算,展示这一回合的结果,比如打赢了弹出胜利动画,打输了弹出失败动画。如果纯粹依赖客户端,很可能会出现客户端作弊的情况(比如作弊器),所以最后的结算肯定还是由服务器做结算。

随着游戏策划团队想法的增加,游戏越来越复杂,比如buff、debuff、暴击等等。随着游戏越来越好玩,结算系统会越来越复杂,游戏进程很可能会出现卡顿现象,而最好的解决方案就是把战斗结算这一CPU密集型的逻辑抽离出来。这一方案也尤其适用于新开服、活动期间以及每日有日常峰谷的情况等。

如上图,当客户把战斗结算迁移到函数计算上后,明显可以看到,即使TPS在日常峰谷呈90°直线上升,但是Latency延时仍然基本稳定在200~300毫秒之间,,充分保证了用户的玩家体验。

在这个场景中,函数计算的核心价值是:

弹性高可用:百毫秒级伸缩扩容,无需预留任何资源。

CI/CD和版本灰度能力:每当游戏策划有新想法时,战斗结算函数必然会更新,可以通过直接给这个函数设置版本和别名,从而非常安全地灰度到下一个版本的战斗结算函数。

这是游戏场景里非常经典的例子,将CPU密集型的逻辑抽离出来放到函数计算上,在不影响Gameserver的服务器的同时,又具备了百毫秒伸缩扩容的能力,保证了玩家用户体验。

2.Serverless实现超大规模游戏营销

游戏厂商的需求是:第一,游戏需要大规模营销,波峰波谷无法预估;第二,游戏需要快速上线,对开发效率要求较高。

客户压测数据如下图所示,第一个函数TPS上升到十几万,第二个削峰填谷后变成不到3万。

在这个场景中,函数计算的核心价值是:

事件驱动,解耦架构难点;

弹性高可用,削峰填谷;

快速开发上线,1天完成开发和压测。

3.Serverless实现安卓游戏APK包按渠道分发

以阿里内部UC游戏分发平台为例,在对象存储里面放了一个原始包,其他包在文件固定位置加一些东西就可以。但是UC渠道每天有不同的下载请求,通过Channel=UC/小米/华为到CDN,CDN直接回源到函数计算,比如在函数计算看到回源是小米,从OSS拿到原始包把小米渠道信息写进去,再把这个包直接返还给CDN,其他渠道包同理,只要被下载过一次,都被缓存到CDN。

这个案例中,函数计算的核心价值是:

CDN直接回源到弹性高可用的函数计算服务(FC);

降低成本,按需付费。客户不需要为峰值预留计算资源,流量单价降价40%。

4.Serverless实现快速多渠道游戏打包

效率低:针对不同的渠道去打包,传统的做法是固定买几台打包机,打包机可能大部分时间浪费,每周就打几次;

高成本:渠道越接越多,打包机只有几台,想查看渠道包情况,可能需要打一晚上第二天才能看到。随着渠道越增越多,打包机也需要不断增加,闲置成本也越来越高;

易出错:如何给打包机分配任务,调度系统需要自己开发,如果打包机出现了异常,需要自己去解决打包机的问题。

这个场景下,引入Serverless工作流,如下图所示:

工作流定义:第一步,把母包从OSS上下载下来;第二步,并行去打包这些包,每个渠道包有一个并行的任务;第三步,打包完以后,进行后处理。

在这个场景下,函数计算的核心价值是:

任务自动化:事件一键触发、自动运行,工作流完整跟踪记录整个打包流程,提高打包成功率;

打包并行化:多个渠道包构建过程并行,提高打包效率,同时支持配置模板化;

低成本:按量付费,计算资源利用率高。

5.Serverless实现游戏服务快速全球部署

阿里云作为国内第一家与Terraform集成的云厂商,生态支持较完整(Serverless重度依赖云服务,中国支持较完整)。由于游戏不可能使用很多其他的云服务,而使用Terraform可以实现快速多云部署。

6.实践案例总结

游戏活动运营激活码生成、消耗等一些封测运营活动;游戏打包发行、广告买量、活动页、运营平台等业务平台。

用户基本业务数据处理

三、阿里云函数计算现状

1.函数计算是国内企业Serverless架构落地、业务创新的首选产品

2020年中国云原生用户调查报告,阿里云Serverless用户占比是66%。CNCF2019年中国云原生报告中显示,函数计算是国内企业Serverless架构落地和业务创新的首选产品。

2.阿里云函数计算产品全景

函数计算是国内生态最完整、功能最丰富的Serverless产品,开发者一步上云、一键Serverless化将成为现实。

图:阿里云函数计算产品全景

系统层面:支持了各种语言,开发者可以选一个自己最喜欢的语言,同时也支持了容器镜像,拥抱容器生态;

触发层:可以APIGateway或者SDK直接触发,也可以用Kafka、OSS、CDN等事件源触发;

工具层:有全新的Serverless-Tool、Fun、开发者框架等等;

可观测性:包括日志、监控、Metrics、告警、Tracing等;

应用中心:有非常好的落地案例,可以快速体验经典案例。

本文为阿里云原创内容,未经允许不得转载