游戏开发、上线和运营的全流程存储解决方案

乐忱
  • 收获赞:5
  • 擅长领域:阿里云高级产品解决方案架构师,擅长领域:存储、互联网应用、音视频

本文试图以游戏行业为切入点,介绍一种覆盖业务开发、发布上线和运营全流程的数据存储、管理和应用解决方案,用于提升数据读写、流转和管理的效率,帮助用户快速解决存储侧的架构设计、基础接入和最终服务于业务,并对未来的架构演进方向做了概要分析。

概述

游戏行业竞争激烈,如何让游戏快速从创意设想到成品发布上线开服,对游戏从业者至关重要。而在新游发行过程中,涉及安装包制作、游戏开服模拟压测、全网全量用户下载等环节,对游戏制作商的IT系统能力提出了较大挑战,其中数据存储又是整体解决方案中的重要一环。

方案介绍

本文方案将围绕游戏研发和上线过程中涉及的数据存储、管理、分发和处理等诉求,提供一套满足业务数据读写性能、数据高质量传输和智能运维管理日志的解决方案,帮助游戏研发和运维人员更好地掌握最佳实践,为游戏上线开服提速。

目标读者

游戏研发、运维和产品运营等角色人员或云计算行业解决方案设计人员,需要有一定的计算机、数据存储和网络相关的IT技术基础。

适用场景

适用于解决游戏研发上线过程中的以下痛点:

  • 游戏安装包合入时数据写入速度慢,计算资源存在浪费

  • 跨区域或跨境部署时,游戏安装包分发速度慢

  • 境外用户或弱网用户下载安装包速度慢

  • 自建ELK等日志分析平台存在稳定性、扩展性和成本高等问题

也可拓展应用于其它有类似数据处理需求的业务场景。

相关概念

块存储(EBS):是云服务器ECS提供的块设备产品,具有高性能和低时延的特点,支持随机读写,满足大部分通用业务场景下的数据存储需求,可以让客户像使用物理硬盘一样格式化并建立文件系统来使用块存储。

文件存储(NAS):提供可共享访问,弹性扩展,高可靠,高性能的分布式文件系统。支持NFS、SMB协议访问,兼容POSIX文件接口,可支持弹性计算ECS、容器服务ACK等计算节点共享访问,无需修改应用程序,即可无缝迁移业务系统上云。

对象存储(OSS):是一种海量、安全、低成本、高可靠的云存储服务,提供restful接口和http/https访问方式,适合存放任意类型的文件,具备容量和处理能力弹性扩展等能力。

日志服务(SLS):云原生观测与分析平台,为Log、Metric、Trace等数据提供大规模、低成本、实时的一站式平台化服务,支持数据采集、加工、查询与分析、可视化、告警、消费与投递等功能,可全面提升研发、运维、运营、安全等场景的数字化能力。支持对阿里云、跨云、自建数据中心的日志采集及分析。

方案架构

方案架构图

1

整体解决方案围绕存储,包括:

  • 基础数据存储,如云主机ECS上部署数据库、应用服务。

  • 游戏打包数据,如容器化部署的业务封装合入的代码包。

  • 游戏分发的应用安装包。

  • 业务系统运行过程中的日志、链路状态数据。

整体解决方案设计思路如下:

  • 选配低延时、高IOPS的ESSD块存储,用于云主机数据库等IO密集型业务数据读写。

  • 使用容量型NAS与容器无缝对接,满足多个计算节点大吞吐写入安装包数据。

  • 通过OSS跨区域复制快速将安装包文件分发到国内任意阿里云地域,并且可按用户分布的地域情况,配置OSS加速域名,满足跨境或偏远地区下载安装包。

  • 利用sls采集分析终端埋点和服务端日志数据,可对接大数据平台。

方案优势

  • 满足高性能数据读写

游戏业务数据库会有大量小文件随机读写操作,而安装包生成过程又涉及到大量百MB以上大文件追加写入,需要在短时间内完成,对存储吞吐带宽性能要求高,IO时延必须在秒级甚至ms以内,通过NAS和ESSD的组合使用,可减少IO等待耗时,提升计算资源利用效率。

  • 提升数据分发和访问效率

既要充分保障城市地区的用户访问,又要兼顾边远地区的用户体验,借助对象存储实现国内南北向双节点覆盖,同时考虑跨境访问或跨境快速分发的场景,通过对象存储的传输加速能力,提供稳定的数据下载速度。

  • 让业务系统运维更加智能化和可视化

游戏正式上线前的灰度和压测是重要环节,上线后也需要持续的业务运营,这都需要一套覆盖日志采集、分析和告警监控的智能运维系统,为业务提供稳定可靠的日志支撑系统。

方案实施

前提条件:

1)已注册阿里云账号,且未处于欠费停机状态

2)已创建ECS云主机实例

步骤一:开通和部署块存储,满足云主机部署的数据库、应用服务等业务高性能读写

1、评估块存储规格,重点关注存储容量、吞吐、IOPS和时延要求。

具体可参考以下各类型的云盘性能参数:

2

2、创建云盘,重点需要注意地域、可用区、容量大小和盘数量。

3

3、挂载云盘,可以直接在步骤2)创建过程选择具体的实例类型,也可以在云盘创建完成后再挂载。

4

4、云盘运维及监控,便于开发运维人员管理磁盘使用

在ECS控制台,您可以查看云盘的IOPS和吞吐量信息等监控信息,支持按时间段筛选。如需要配置磁盘水位、IO和吞吐相关的告警监控,可在控制台云监控界面做配置:具体可参考监控项说明

5

注意:每台ECS云主机实例最大支持16块云盘,每块盘最大容量为32TB,同时云盘也支持扩容(在线和离线)、升配。

步骤二:借助文件存储,满足容器化游戏代码开发和包封装业务的高效共享读写

1、评估文件系统存储规格,重点关注存储容量、吞吐、IOPS和时延要求。阿里云NAS文件存储支持通用型NAS、低频NAS和极速型NAS等几大类,其中通用型NAS规格如下:

6

低频NAS主要用于做数据冷热分层,结合通用型NAS来使用,可以优化存储成本,直接在控制台配置相应策略即可,具体可参考:低频介质

极速NAS主要是用于满足对时延要求更低的应用场景:

7

2、创建文件系统

通用型NAS支持按量和弹性使用的方式,而极速型NAS则需要提前预置容量规格,容量不足时需要手动扩容。

需要特别注意:NAS文件系统尽可能选择和ECS实例在同一个可用区,以降低跨可用区带来的时延开销。

8

3、挂载文件系统,支持多节点共享访问

挂载点类型、VPC网络和交换机一般选择与ECS实例或容器相同的即可。其中容器ACK的存储接口CSI与NAS文件存储已深度融合,细节接入方式可参考: 容器与云原生

9

4、运维管理及监控,做到状态可监控、告警可感知

在NAS控制台可对文件系统的运行状态做监控,一般需要重点关注吞吐或IOPS是否达到瓶颈,以及对业务的影响如是否会出现读写慢等异常。如需要做告警监控可使用类似块存储的做法,在云监控平台配置策略即可。

10

步骤三:通过对象存储,便捷完成游戏安装包分发及满足多地域、跨境部署需求

1、评估地域、存储类型、数据冗余和保护机制、加密机制和ACL访问权限,创建存储桶。

需要特别注意的配置项目:

  • Bucket名称,全局唯一,创建成功后不允许修改

  • 存储类型主要选择依据是数据写入后的访问频次,原则是访问频次超过1次/月,选标准存储;不超过1次/月,选低频;一年内访问不超过1次才用归档;更冷的数据选用冷归档类型。

  • 多版本:需要结合业务是否需要做防操作的保护(删除、覆盖写)

11

2、配置跨区域复制任务,操作图形化和进度可视化,让数据多地域部署更加高效

目前支持同一账号下的同区域和跨区域复制,复制速度取决于集群水位情况、文件大小分布,需要重点关注“数据同步策略”之“增/删/改同步”,如选中后,源端的删除操作将会同步至目的端,触发目的端的删除操作,需要提前评估业务是否接受该动作。

12

3、配置传输加速,改善长距离、弱网、跨境传输等用户访问体验

针对弱网环境或跨境传输等场景,打开传输加速功能可以有效改善传输速率和稳定性。开启后,访问对象桶数据时带上oss-accelerate.aliyuncs.com的加速域名才有相应的加速效果,可以结合业务场景混合使用加速和普通域名。

13

4、运维和监控,满足基础数据查询和分析需求

在OSS控制台可以看到基础的用量、吞吐、请求次数和热点分布等数据,如果需要更详细的数据可以到云监控或者开启日志服务。对于LOG日志,如果实时性要求不高,可以直接配置accesslog访问日志并保存至自有的存储桶。如果实时性要求高,建议开启日志服务。

14

步骤四:基于日志服务,构建统一的日志采集、监控和分析管理平台,提升业务运维和运营效能

1、评估需要做日志采集的对象,包括APP客户端、小程序、web应用、服务端或智能IOT设备端等,以及日志需要保存的时间周期、索引字段及是否需要做数据加工清洗、对接数仓等大数据平台。

2、开通日志服务,创建项目名称

  • Project的名称全局唯一,创建成功后无法修改

  • Project所属于地域,建议选择与所采集的服务端,如ECS或数据中心相同的地域,加快采集速度,创建成功后无法修改地域信息

15

3、创建和配置日志库logstore

Logstore是日志服务中日志数据的采集、存储和查询单元,Logstore与project的关系类似于数据库DB与分区表的关系,而logstore的名称也是全局唯一的,创建成功后不可修改。

16

日志服务使用Shard控制Logstore的读写数据的能力,默认1个shard提供写(5MB/s、500次/s),读(10MB/s、100次/s)的处理能力,shard数量涉及计费,建议结合业务规模填写合理数值,如果担心业务弹性对性能的突发需求,可以打开自动分裂能力。

4、安装和配置logtail采集客户端,支持断点续传和传输加速,有效解决各种复杂终端环境问题

日志服务提供通过SDK和Logtail客户等日志采集方式,一般建议直接使用logtail,支持通过极简模式、正则模式、分隔符模式、JSON模式、Nginx模式 、IIS模式、Apache模式来采集文本日志。具体安装方法可参考:https://help.aliyun.com/document_detail/174039.html

Logtail启动配置参数可结合机器资源负荷情况自主进行调整,重点关注参数包括CPU使用率cpu_usage_limit、内存使用率mem_usage_limit、流量使用情况max_bytes_per_sec

{...
"cpu_usage_limit" : 0.4,
"mem_usage_limit" : 384,
"max_bytes_per_sec" : 20971520,
"process_thread_count" : 1,
"send_request_concurrency" : 4,
"buffer_file_num" : 25,
"buffer_file_size" : 20971520,
"buffer_file_path" : "",
...
}

涉及跨境采集上传日志场景,日志服务也提供了采集全球加速能力,可参考采集加速

5、日志查询分析,支持配置模板输出和仪表盘可视化管理

在SLS控制台,找到project和logstore,输入查询与分析语句,选择时间范围即可,如希望统计最近1天访问IP地址的来源情况,并通过表格展示查询与分析结果,则可以执行以下语句

* | selectcount(1) as c, ip_to_province(remote_addr) as address groupby address limit 100

17

更多查询语法可参考:查询概述

6、配置告警规则,异常信息及时触达

日志服务支持告警规则配置,开发者可以在告警中心创建相应的规则,一旦触发阈值后将以短信、电话、邮件和对接的IMM通信工具等渠道通知到相关人员,同时还可以对告警做风暴抑制等灵活操作。

18

更详细的告警操作介绍可参考:什么是日志服务告警

未来展望

游戏业务上线后的持续运营分析,对拉活和拉新都非常重要,作为方案的延伸,在完成基础架构搭建后,可重点关注借助对象存储构建数据湖的最佳实践,并利用好SLS日志服务在数据采集通道、Trace全链路跟踪及作为大数据输入源等能力,构建更具可视化和远见性的业务平台。