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

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

 

一、前言

1. 游戏客户上云关注点

游戏行业是一个富有创意又竞争激烈的市场,被称为第九艺术。游戏客户上云主要关注以下 4 个方面:

  • 快速迭代,全球部署

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

  • 高并发、高弹性

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

  • 稳定、可靠、安全

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

  • 数据、运维、成本控制

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

2. 认识函数计算

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

函数计算:只需要专注业务代码,面向函数极简编程(各种编程语言),丰富的云产品间集成与事件驱动方式提供端到端解决方案。

  • 专注业务代码

 

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

 

上图是一个简单的例子,用 Java 函数写一个“Hello World”,把它设置成 Java8 的执行环境,256MB 的内存,设置完上传到函数计算,开发任务就完成了,之后主动调用函数即可,无需关注任何基础设施。

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

 

  • 100< 代码量

面向函数极简编程,只需要关注核心代码。还支持各种编程语言,对开发者非常友好,开发者可以选一个自己最擅长的语言,写完后上传到函数计算即可。

  • 100ms 极致弹性

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

  • 100% 资源利用率

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

二、Serverless 游戏场景实践案例

1. 高弹性战斗结算业务

战斗结算是强 CPU 密集型,结算系统每日需要大量的计算力,尤其是开服或者活动期间突然涌入的大量玩家,导致需要的计算量瞬间几倍增长,同时需要结算系统保持稳定的延时来保证玩家的用户体验。

 

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

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

 

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

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

  • 弹性高可用:百毫秒级伸缩扩容,无需预留任何资源。
  • CI/CD 和版本灰度能力:每当游戏策划有新想法时,战斗结算函数必然会更新,可以通过直接给这个函数设置版本和别名,从而非常安全地灰度到下一个版本的战斗结算函数。

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

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

游戏厂商与广告商联合投放大量互联网广告,该业务场景无法准确预估运营流量,高并发、高弹性的后台服务对业务结果至关重要。且大量的营销数据和原始日志需要进行离线分析,驱动运营策略升级。

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

 

解决方案如上图,将函数埋点到网页里面,点击时自动触发这个函数,函数再把点击传过来的用户消息持久化到 kafka。这一步函数 TPS 非常高,预估是几万或者十万级别。第二步,通过 kafka connector 把消息持久化以后,connector 可以有 batch 操作,比如把 50 次点击的数据 batch 成 1 个再发给另外一个函数,相当于后面的这个函数变成了 1/50 的调用量,另外这个函数是异步触发,加上 batch 操作,起到削峰填谷的作用,因为只需要把消息写入到数据库就可以完成任务,只要不丢数据就好。同时这个函数打印的日志也可以用 SLS 进行分析或者写入数据库 RDS/ADP 进行玩家画像的分析。

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

 

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

  • 事件驱动,解耦架构难点;
  • 弹性高可用,削峰填谷;
  • 快速开发上线,1 天完成开发和压测。

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

UC 的游戏分发平台的游戏 APK 包需要根据实时请求中的参数获取渠道号,并将渠道号写入 APK 文件固定位置, UC 有每天有大量的且不同渠道的下载请求,能实时让用户断点下载指定渠道的 APK 游戏包。

 

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

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

  • CDN 直接回源到弹性高可用的函数计算服务(FC);
  • 降低成本,按需付费。客户不需要为峰值预留计算资源,流量单价降价 40%。

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

在发行游戏之前,通常会针对不同的发行渠道,将游戏母包和不同的渠道资料包构建成渠道包。在这个构建过程中,如果使用手工方式,存在易出错、效率低、高成本的痛点。

  • 效率低:针对不同的渠道去打包,传统的做法是固定买几台打包机,打包机可能大部分时间浪费,每周就打几次;
  • 高成本:渠道越接越多,打包机只有几台,想查看渠道包情况,可能需要打一晚上第二天才能看到。随着渠道越增越多,打包机也需要不断增加,闲置成本也越来越高;
  • 易出错:如何给打包机分配任务,调度系统需要自己开发,如果打包机出现了异常,需要自己去解决打包机的问题。

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

 

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

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

  • 任务自动化:事件一键触发、自动运行,工作流完整跟踪记录整个打包流程,提高打包成功率;
  • 打包并行化:多个渠道包构建过程并行,提高打包效率,同时支持配置模板化;
  • 低成本: 按量付费,计算资源利用率高。

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

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

 

6. 实践案例总结

  • CPU 密集接口战斗结算;社交类游戏中,游戏内截图、游戏直播视频在线截图、离线转码等;聊天敏感词检测过滤,聊天翻译;排行榜等。
  • 游戏活动运营激活码生成、消耗等一些封测运营活动;游戏打包发行、广告买量、活动页、运营平台等业务平台。
  • 用户基本业务数据处理

三、阿里云函数计算现状

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

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

 

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

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

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

  • 系统层面:支持了各种语言,开发者可以选一个自己最喜欢的语言,同时也支持了容器镜像,拥抱容器生态;
  • 实例类型:默认选择百毫秒弹性实例,也可以选择性能实例(比如强 CPU 密集型的音视频转码);
  • 触发层:可以 API Gateway 或者 SDK 直接触发,也可以用 Kafka、OSS、CDN 等事件源触发;
  • 工具层:有全新的 Serverless-Tool、Fun、开发者框架等等;
  • 可观测性:包括日志、监控、 Metrics、告警、Tracing 等;
  • 应用中心:有非常好的落地案例,可以快速体验经典案例。

作者:罗松(西流)

原文链接

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ACK正式支持对基于Alibaba Cloud Linux操作系统的集群进行等保加固

简介&#xff1a; 我们对基于Alibaba Cloud linux操作系统的ACK集群进行等保加固&#xff0c;意味着阿里云在云产品开发和交付的过程中将安全作为重要组成部分&#xff0c;将合规融入到产品的“血液”中&#xff0c;把安全植入产品的“骨髓”里&#xff0c;能够帮助有等保诉求的…

华为一口气发布十余款新品,HarmonyOS用户过亿

9月13日19:30&#xff0c;华为在线上举办了智慧办公新品发布会。本次发布会带来了华为MateBook 13s笔记本电脑、华为MateBook 14s笔记本电脑、华为MateStation X一体机、华为PixLab X1打印机、华为MateView GT 27英寸曲面屏显示器以及华为MatePad Pro 12.6英寸套装版等十余款新…

labelme实例分割_MaskRCNN在多个实例数据集上实践

刚刚开通付费功能&#xff0c;好奇心驱使我试试效果&#xff0c;这不&#xff0c;前两天试了一下&#xff0c;感觉也没啥新奇的。我的公众号使命是记录和分享个人学习经历&#xff0c;不会使用付费功能的。在此也非常感谢之前给我付费的小伙伴哈&#xff0c;哈哈&#xff0c;话…

技术干货 | 阿里云数据库PostgreSQL 13大版本揭秘

简介&#xff1a; 阿里云RDS PostgreSQL是一款兼容开源PostgreSQL的全托管云数据库产品&#xff0c;自2015年首次发布以来&#xff0c;根据用户需求不断升级迭代&#xff0c;已支持9.4、10、11、12等多个版本&#xff0c;覆盖了高可用版、基础版、只读实例等多种形态&#xff0…

国家能源集团携手华为首次部署矿鸿操作系统,开创工控新纪元

9月14日&#xff0c;由国家能源集团携手华为公司共同举办的“矿鸿操作系统”发布会在北京圆满举行。矿监局、工信部、科技部、能源局、煤炭工业协会、国家能源集团、华为等政府机构与企业代表出席&#xff0c;共同见证了“矿鸿操作系统”的正式发布。面对煤矿数字化、智能化的快…

MaxCompute在电商场景中如何进行漏斗模型分析

简介&#xff1a; 本文以某电商案例为例&#xff0c;通过案例为您介绍如何使用离线计算并制作漏斗图。 背景 漏斗模型其实是通过产品各项数据的转化率来判断产品运营情况的工具。转化漏斗则是通过各阶段数据的转化&#xff0c;来判断产品在哪一个环节出了问题&#xff0c;然后…

ado.net mysql 事务_ADO.NET事务

在发布System.Transaction命名空间之前&#xff0c;可以直接用ADO.NET创建事务&#xff0c;也可以通过组件、特性和COM运行库(位于System.EnterpriseServices命名空间中)进行事务处理。本文如题所示&#xff0c;介绍在这些传统事务处理方式中较为简单的“ASP.NET事务”。在传统…

这可能是大型复杂项目下数据流的最佳实践

简介&#xff1a; 实际项目中沉淀的数据流最佳实践。 数据流是前端一直以来都存在的一个问题&#xff0c;我们项目沉淀了一套最佳实践&#xff0c;如有问题&#xff0c;欢迎探讨 在旧的 Done 项目中&#xff0c;代码复杂度高&#xff0c;已经到了“牵一发而动全身”&#xff0c…

淘宝推荐、视频搜索背后的检索技术竟是它!深度揭秘达摩院向量检索引擎Proxima

简介&#xff1a; 淘宝搜索推荐、视频搜索的背后使用了什么样的检索技术&#xff1f;非结构化数据检索&#xff0c;向量检索&#xff0c;以及多模态检索&#xff0c;它们到底解决了什么问题&#xff1f;今天由阿里巴巴达摩院的科学家从业务问题出发&#xff0c;抽丝剥茧&#x…

ipython和jupyter哪个好_对Python开发者而言,IPython仍然是Jupyter Notebook的核心

如果你不明白 Jupyter 是什么&#xff0c;这么说吧&#xff0c;它拥有和 IPython 同样的代码&#xff0c;并且是由同一批人开发的&#xff0c;只不过取了一个新名字、安了一个新家。下面这个注脚进一步说明了这一点&#xff1a;我从声明中解读出来的信息是&#xff0c;“Jupyte…

这个高薪行业正在大量招人,你会考虑吗?

作者 | 侯淼淼 出品 | 《新程序员》当人们提及“程序员”这一职业的时候&#xff0c;大多数人的第一想法往往是高薪。然而近年来&#xff0c;随着造车势力的兴起&#xff0c;新一轮的高薪岗位抢人大战正式打响。2021年以来&#xff0c;一汽、东风等传统车厂招聘岗位数量持…

AI在出行场景的应用实践:路线规划、ETA、动态事件挖掘…

简介&#xff1a; 本文是#春招专栏#系列的第1篇&#xff0c;根据高德机器学习研发部负责人damon在AT技术讲坛所分享的《AI在出行领域的应用实践》的内容整理而成。 前言&#xff1a;又到春招季&#xff01;作为国民级出行服务平台&#xff0c;高德业务快速发展&#xff0c;大量…

lsof查看进程占用文件_Linux 利用lsof命令查找已经删除的文件来释放磁盘空间

测试环境一台服务器/ 根目录空间使用率达到94%&#xff0c;但是通过du -sh * 发现实际空间没没用用到那么多&#xff0c;初步怀疑&#xff0c;之前删除的文件&#xff0c;有运行中的进程一直占用&#xff0c;导致空间没有释放&#xff0c;如图通过du -sh * 发现共实际使用不到1…

AcWing 1238. 日志统计(双指针,滑动窗口)

题目&#xff1a; 1238. 日志统计 - AcWing题库 数据范围 输入样例&#xff1a; 7 10 2 0 1 0 10 10 10 10 1 9 1 100 3 100 3输出样例&#xff1a; 1 3 思路&#xff1a;双指针 代码&#xff1a; #include<iostream> #include<cstdio> #include<cmath>…

基于 Wasm 和 ORAS 简化扩展服务网格功能

简介&#xff1a; 本文将介绍如何使用 ORAS 客户端将具有允许的媒体类型的 Wasm 模块推送到 ACR 注册库&#xff08;一个 OCI 兼容的注册库&#xff09;中&#xff0c;然后通过 ASM 控制器将 Wasm Filter 部署到指定工作负载对应的 Pod 中。Wasm Filter 部署中的所有步骤都使用…

漫话:如何给女朋友解释什么是元宇宙?

作者 | 漫话编程来源 | 漫话编程Metaverse元宇宙这个词&#xff0c;第一次出现是在1992 年&#xff0c;美国著名科幻作家尼尔・斯蒂芬森&#xff08;Neal Stephenson&#xff09;的小说《雪崩&#xff08;Snow Crash&#xff09;》中。在书中&#xff0c;尼尔・斯蒂芬森描述了一…

浅谈分库分表那些事儿

简介&#xff1a; 本文主要阐述在分库分表改造过程中需要考虑的因素以及对应的解法&#xff0c;还有踩过的那些坑。 本文适合阅读群众&#xff1a;需要从单库单表改造为多库多表的新手。 本文主要阐述在分库分表改造过程中需要考虑的因素以及对应的解法&#xff0c;还有踩过的…

java上传大文件_Java超大文件上传解决办法

这里只写后端的代码&#xff0c;基本的思想就是&#xff0c;前端将文件分片&#xff0c;然后每次访问上传接口的时候&#xff0c;向后端传入参数&#xff1a;当前为第几块文件&#xff0c;和分片总数下面直接贴代码吧&#xff0c;一些难懂的我大部分都加上注释了&#xff1a;上…

剪了 20% 的刘海、120Hz 刷新率、1TB 存储,iPhone 13 来了!

作者 | 苏宓出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;2011 年 8 月 24 日&#xff0c;乔布斯表示「无法继续担任苹果首席执行官的这一天终于来临」&#xff0c;随后彼时的代理首席执行官蒂姆库克被任命为正式首席执行官&#xff0c;成为苹果公司的新任掌舵者…

阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练

简介&#xff1a; 阿里云AHAS Chaos&#xff1a;应用及业务高可用提升工具平台之故障演练 应用高可用服务AHAS及故障演练AHAS Chaos 应用高可用服务&#xff08;Application High Availability Service&#xff09;是阿里云一款专注于提高应用及业务高可用的工具平台&#xff…