云上游戏数据分析实践

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 数据分析和游戏的生命周期与盈利息息相关,同时数据分析对游戏的运维也起到了至关重要的作用,精确的数据分析可以延长游戏的生命和帮助其盈利。本文针对游戏行业的数据特点,结合游戏数据分析的现状,对数据分析上云的技术选型、结合ODPS、SLS、RDS、DPC等产品和服务实施的解决方案进行了介绍。

作者:上海驻云高级架构师 李俊涛


从游戏发展的角度来看,不管是端游、页游,还是现在发展迅猛的手游,其生命周期与盈利情况都与数据分析能力息息相关。同时数据分析对游戏的运维也起到了至关重要的作用。精确的数据分析有助于在做游戏运营时推出合理的新手引导,在及时的渠道推广和丰富的消费场景设计,这些将极大地影响游戏玩家对游戏的关注度,从而延长游戏的生命周期,并从中更好盈利。

 

     游戏数据分析特点

 

     分析是建立在数据上的,数据的特点决定了分析的方向和方法。游戏数据的特点主要表现在以下四个方面。

 

     第一,数据量大。以手机游戏为例,一款中型规模手游的日均数据量增长在几十GB。在这种情景下,做常见的月活、季活等游戏指标分析所面对的就是TB级别的海量数据。

 

     第二,数据类型丰富。从游戏数据的种类来看,分为结构化数据和非结构化数据。从数据存放的位置来看,可以分为文本数据、缓存数据库数据、关系型数据库数据等。

 

     第三,分析维度多样。由于游戏指标不同,所以游戏分析的维度有很大差异。例如,游戏指标通常玩家指标、性能指标和过程指标三类。

 

     ■ 玩家指标,一般用于计算与收入相关的指标,如用户平均消费指标(ARPU,average revenue per user )和每日活跃用户(DAU,daily active users ),也可以用于调查人们如何与游戏系统交互,如用户游戏时间和用户的游戏内好友平均数。

 

     ■ 性能指标,针对游戏技术和软件框架性能,一般包含游戏在用户硬件平台上运行的帧速率,也被用来在观察打补丁或升级时对用户造成的操作影响。

 

     ■ 过程指标,针对游戏开发实际过程中的数据指标。

 

     第四,实时性强。数据分析分为四个层次,数据量少实时性低,数据量少实时性高,数据量大实时性低,数据量大实时性高。这四个数据分析的层次对技术难度的要求是逐渐提高的。而游戏数据分析的特点可以划定在最后一档即数据量大实时性高,所以海量游戏数据分析对技术能力和软件需求提出了极大的挑战。

 

     游戏数据分析现状及瓶颈

 

     我们曾拜访了近百家游戏客户,深入了解游戏开发商如何处理和分析数据,发现目前数据分析在不同游戏行业中使用程度不同,主要表现在游戏规模越大,使用的数据分析维度越广,程度越深;中小型游戏数据分析使用程度一般。总体来说,游戏数据分析的现状如下。

 

     第一,不做数据分析。这种类型的游戏客户在小型页游和大厅类游戏中比较常见,只是出于备份的需要将数据从生产环境中定时批量备份出来,用单独的硬盘或者服务器做数据存储。

 

     第二,数据库级别执行SQL查询。大多数的游戏客户将生产数据备份出来,导入到专有的数据库中做离线数据分析,采用的方法是使用SQL语言和第三方报表工具做基本的数据查询。但基于数据库对数据量的限制,当单表记录到千万甚至上亿级别后,这种分析方法就基本行不通了。

 

     第三,使用成熟的数据仓库产品。在中大型游戏客户中,数据规模已达到一定的数量级别,游戏运维离不开数据分析的支撑。这种情况下,用户会选用数据仓库产品,将数据库中的数据经过ETL后导入到数据仓库中做数据分析,或者用户利用物理机集群自建大数据分析平台,例如Hadoop,Spark等分布式大数据分析框架,结合具体应用场景做大数据分析。

 

     在数据分析中,当数据量达到海量级别后,上述三种情况都会遇到相应的瓶颈:

 

     ■ TB/PB级别的数据分析耗时太长;

 

     ■ 时间跨度大的数据分析耗时太长;

 

     ■ SQL无法满足所有数据分析需求;

 

     ■ 海量数据的存储问题。

 

     除了海量数据处理能力问题之外,用户在自建Hadoop等分布式大数据分析框架中也会遇见技术难度高、框架维护成本高等问题。

 

     阿里云产品和服务选型

 

     在协助游戏客户将数据分析上云之前,我们仔细分析了目前用户的数据分析方式。他们的数据目前主要以两种形式存在,文本日志数据和数据库关系型数据。

 

     ■ 文本日志数据记录的是玩家实时战斗信息、晶钻消费信息和登录状态信息。这些数据在每个游戏服务器上都会产生,遵循用户自定义的数据格式。用户有一组专门的日志服务器和自定义程序在游戏服务器上定时批量抽取这些文本数据存放到日志服务器上。

 

     ■ 存放在数据库中的关系型数据增长速度通常会比较快。

 

     上述两种类型的数据都会被批量导入到数据仓库中,进行数据分析。

 

     在技术选型上,客户给我们提出了两点要求。

 

     ■ 要保证上云后数据分析的效率,因为基于目前使用数据仓库分析的方式,分析日活、月活等信息时平均耗时在几十分钟级别。

 

     ■ 要提高数据分析的实时性,上云之前,对类似晶钻消费等数据做分析存在至少1个小时的延时,用户希望上云后能得到更加实时的分析结果。

 

     面对客户的需求,我们在选择阿里云服务时,首先想到了大数据分析服务ODPS(Open Data Processing Service,开放数据处理服务),然后我们选择了对文本日志数据支持较好的SLS(Simple Log Service,简单日志服务)。SLS为大量服务器日志文件的收集提取提供了一种监听实时抽取的服务,此外SLS和ODPS底层是打通的,所有存放在SLS服务器上的日志数据会被自动离线备份到ODPS中,方便用户做进一步的数据分析。除了ODPS和SLS服务,我们的方案中还使用了RDS(Relational Database Service,关系型数据库服务)以及DPC(Data Process Center,采云间)控制台工具。

 

     利用上述提到的阿里云服务,游戏数据分析方案中的架构如图1所示。SLS通过安装在游戏服务器ECS上的Logtail客户端,建立一种类似心跳的方式监听文本日志文件,并按照用户指定的格式将数据抽取后以键值对的形式存放到SLS服务器。每条记录包含了时间、来源ECS IP地址和抽取的键值对信息。ODPS在游戏数据分析中可以被当成是一个大数据分析平台,可以将SLS和RDS数据导入到ODPS中,利用ODPS强大的数据分析能力分析游戏数据。DPC在游戏数据分析中充当IDE角色,除了应用在数据的导入导出,ODPS任务管理,还可以用来做最后的数据分析结果展示。

 

TB1cHK1GVXXXXXJXVXXlfeyUXXX-836-620.jpg

 

     接下来详细介绍上述场景中,游戏数据分析的具体步骤,参见图2。我们可以看到,游戏应用服务器在运行期间产生了大量的数据,接下来分别介绍文本数据和关系型数据导入至ODPS的实现步骤,然后结合数据分析的具体场景介绍在ODPS中做数据分析的实现方式。

 

TB12tq2GVXXXXbjXFXXGZyjZXXX-530-479.jpg

 

     第一,SLS处理文本日志详细步骤。在游戏服务器运行过程中,按照业务逻辑规划,一部分数据将直接写入到文本日志里进行保存。文本日志数据生成在本地指定目录文件中,且文件名按照时间命名,路径格式为/var/log/game/${serverid}/${YYYYMM}/{DD}/{YYYYMMDD.HH24}.log,产生的一条日志记录如下所示:

 

     action:CONSUME,m_uid:9085492,role_id:……,channel:20016,plat:ANDROID,udid:7ca94b77-fa76-……-2ad2ffe54ab3,server:……,role_name:monkey,ip:……,consume_time:2014-08-20 00:02:03,role_lv:22,item_id:0,amount:25,remain_amount:89,orderid:0,blue_amount:25,red_amount:0,blue_remain:89,red_remain:0

 

     Logtail是ECS上的监听程序,可以配置监听目录和提取的日志内容,例如对上文的文本内容用自定义正则表达式提取出来,内容如图3所示。

 

TB1aqSUGVXXXXbCaXXXDNRhMXXX-468-205.jpg

 

     日志被提取出来后,会按照(key:value)键值对的方式保存至SLS指定Category。日志被提取到SLS服务器后,除了每条SLS日志记录被提取的文本内容,还会记录一个时间和IP,这里时间是指数据写入文本日志的时间,IP记录了文本日志来源的游戏服务器IP地址。同时,已经保存在SLS服务器的数据会自动离线保存到ODPS用户指定的Project里面,如图4所示。

 

TB1_5m9GVXXXXaSXXXX8PYN8FXX-552-256.jpg

 

     SLS Category存放的所有记录会自动离线保存到ODPS中,首次数据备份在6个小时内完成,以后每小时SLS的数据会被增量备份至ODPS。

 

     第二,RDS处理关系型数据详细步骤。关系型数据是游戏服务器在运行过程中,对用户角色创建和用户消费行为数据的记录,直接通过业务逻辑写到RDS数据库中保存。RDS里面的数据,可以通过阿里云DPC工具,将数据批量定时地导入到ODPS指定Project里,如图5所示。

 

TB1af1UGVXXXXX6aXXXqfNfGpXX-244-177.png

 

TB1Xv92GVXXXXa7XFXXeq4sMpXX-257-174.png

 

     RDS数据导入经过基础配置、列筛选、数据筛选三个步骤后,就可以发布导入计划时间,可以分为每日、每周、每月进行数据导入。关于导入的数据筛选和导入时间的设置,完全取决于用户的使用场景。例如,用于游戏消费数据信息这种实时分析要求较高的数据建议选择每日非活跃时间段定时导入。任务发布后,可以继续通过DPC控制台对任务的执行情况进行查看。

 

     第三, ODPS数据分析详细步骤。在游戏服务器产生的文本数据和关系型数据都集中导入到ODPS之后,接下来可以利用ODPS平台本身的产品特性,开始做用户自定义的数据分析。ODPS中常用的数据分析有以下几种方法。

 

     ■ ODPS SQL语句查询,能查询满足用户绝大多数的数据分析需求,如图6所示。

 

TB1Eh57GVXXXXXrXpXXI.6n9VXX-554-444.jpg

 

     ■ 发布自定义UDF任务。UDF是指用户自定义函数处理,例如做一个游戏描述的大小写转换函数,用Java代码编写好函数后,打包成Jar文件发布到ODPS中,然后SQL语句里面就可以直接调用函数功能。

 

     ■ 发布MapReduce任务。阿里云ODPS MapReduce和UDF功能在Eclipse开发工具中有相应的开发插件,在插件完成安装后,创建MapReduce功能。

 

     在创建MapReduce文件后,根据实际游戏数据分析任务,分别完成Map函数和Reduce函数的编码,然后通过Driver类设置运行资源和格式。在Eclipse中完成的MapReudce任务可以打包成为一个Jar文件发布到ODPS指定Project。

 

     第四,DPC数据展示。目前DPC的图形化数据展示功能还没有开放,本节将使用表格化数据举例说明DPC数据处理结果。发布任务后,DPC控制台提供查看操作日志的功能,如图6所示。

 

     目前,所有子任务执行成功后,数据分析的结果会以表格的形式展现,同时这些数据分析结果也可以通过DPC工具保存至RDS。在RDS中数据的交互性更强,可以利用第三方报表工具做多维度的数据展示。

 

     总结

 

     阿里云发展到现在已经提供多种云产品和服务。这些服务功能选择性多,稳定性好,性能优异,节省了用户使用成本。希望阿里云能推出更多稳定可靠的产品和服务给技术人员更多的选择。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
数据采集 机器学习/深度学习 数据可视化
使用Jupyter Notebook进行数据分析:入门与实践
【6月更文挑战第5天】Jupyter Notebook是数据科学家青睐的交互式计算环境,用于创建包含代码、方程、可视化和文本的文档。本文介绍了其基本用法和安装配置,通过一个数据分析案例展示了如何使用Notebook进行数据加载、清洗、预处理、探索、可视化以及建模。Notebook支持多种语言,提供直观的交互体验,便于结果呈现和分享。它是高效数据分析的得力工具,初学者可通过本文案例开始探索。
|
2月前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据分析:从入门到实践
使用Python进行数据分析:从入门到实践
55 2
|
2月前
|
SQL 分布式计算 数据挖掘
加速数据分析:阿里云Hologres在实时数仓中的应用实践
【10月更文挑战第9天】随着大数据技术的发展,企业对于数据处理和分析的需求日益增长。特别是在面对海量数据时,如何快速、准确地进行数据查询和分析成为了关键问题。阿里云Hologres作为一个高性能的实时交互式分析服务,为解决这些问题提供了强大的支持。本文将深入探讨Hologres的特点及其在实时数仓中的应用,并通过具体的代码示例来展示其实际应用。
200 0
|
3月前
|
数据采集 算法 搜索推荐
R语言营销数据分析:使用R进行客户分群的实践探索
【9月更文挑战第1天】R语言以其强大的数据处理和统计分析能力,在金融数据分析、营销数据分析等多个领域发挥着重要作用。通过R语言进行客户分群,企业可以更好地理解客户需求,制定精准的营销策略,提升市场竞争力和客户满意度。未来,随着大数据和人工智能技术的不断发展,R语言在营销数据分析中的应用将更加广泛和深入。
|
4月前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据分析的新手指南深入浅出操作系统:从理论到代码实践
【8月更文挑战第30天】在数据驱动的世界中,掌握数据分析技能变得越来越重要。本文将引导你通过Python这门强大的编程语言来探索数据分析的世界。我们将从安装必要的软件包开始,逐步学习如何导入和清洗数据,以及如何使用Pandas库进行数据操作。文章最后会介绍如何使用Matplotlib和Seaborn库来绘制数据图表,帮助你以视觉方式理解数据。无论你是编程新手还是有经验的开发者,这篇文章都将为你打开数据分析的大门。
|
7月前
|
数据采集 数据挖掘 大数据
Python在数据分析中的应用及实践
【2月更文挑战第13天】 本文旨在探讨Python语言在数据分析领域的广泛应用及其实践方法。通过深入浅出的方式,介绍Python在处理、分析大数据时的核心库和工具,如Pandas、NumPy、Matplotlib等,并通过一个实际案例来展示这些工具如何协同工作,解决数据分析中遇到的常见问题。文章不仅为读者提供了一个学习和应用Python进行数据分析的起点,也通过案例分析,展示了Python在数据处理能力上的强大与灵活性,旨在激发读者对Python数据分析深入学习和研究的兴趣。
|
7月前
|
数据可视化 数据挖掘 数据处理
Python在数据分析中的应用实践
【2月更文挑战第13天】 本文旨在探讨Python语言在当前数据驱动时代的核心应用之一——数据分析领域的实践方法和技术。Python,作为一种高级编程语言,因其简洁的语法、强大的库支持以及广泛的社区资源,已成为数据科学家和分析师首选的工具之一。文章首先简要介绍Python及其在数据分析中的优势,随后深入讲解使用Python进行数据处理、分析、可视化的关键技术,包括但不限于Pandas库的数据处理、Matplotlib和Seaborn库的数据可视化技术,以及SciPy和Scikit-learn库在数据分析中的应用。通过具体案例,展示Python如何有效地解决实际数据分析问题,最终旨在为读者提供一
45 2
|
5月前
|
关系型数据库 分布式数据库 数据库
基于PolarDB的图分析:保险数据分析实践
本文以公开的保险数据集为例,示例了基于云原生数据库PolarDB上,在保险理赔场景下,执行图查询来发现异常理赔记录和欺诈团伙:例如,查询与欺诈保单有相同理赔病人的其他保单,或者找出欺诈保单的投保人社交关系,以便进行欺诈预警。PolarDB在关系型数据库的基础上,提供了图分析能力,为企业的统一数据管理和分析,提供了强有力的支撑。
|
7月前
|
数据采集 存储 数据可视化
Python数据分析从入门到实践
Python数据分析从入门到实践
|
7月前
|
数据采集 数据可视化 数据挖掘
Seaborn在数据分析中的应用:案例分析与实践
【4月更文挑战第17天】本文介绍了Seaborn在数据分析中的应用,它是一个基于Python的可视化库,简化了复杂数据的图表创建。通过一个销售数据分析的案例,展示了数据加载、描述性统计、相关性分析、多变量分析及高级可视化步骤。实践技巧包括数据清洗、图表选择、颜色使用、注释标签和交互性。Seaborn助力高效数据探索和理解,提升分析效率。注意,实际使用需根据数据集和目标调整,并参考最新文档。