作者:腾讯游戏
关于腾讯游戏
腾讯游戏是全球科技巨头腾讯旗下的游戏部门,拥有并管理着游戏行业一些最受欢迎的游戏系列,包括热门大作《英雄联盟》。腾讯游戏拥有 2 亿全球用户,且用户数量还在不断增长,已成为游戏分析领域的领导者,为玩家开发了全新的游戏互动方式。
挑战
腾讯游戏旗下游戏由多个工作室开发和运营,因此,其投资组合内的数据被分散储存在不同的系统中。他们迫切期望通过根据一套指标评估所有游戏的表现,然而,由于其复杂的旧架构由 Hive、Spark、Druid、Redis、MySQL、Postgres 组成,并且数据分散,腾讯面临着许多问题:
腾讯游戏原有数据架构
- 数据分散问题: 游戏日志存储在 HDFS 中,而应用层数据则分散存储在 MySQL、PostgreSQL 等事务数据库中。此外,实时数据存储在 Druid 中。这种存储方案不仅增加了管理这些分散数据源的成本和挑战,还使数据使用变得困难,并且经常在访问关键信息时造成瓶颈。
- 分离的数据系统(Lambda 架构): 旧系统采用 Lambda 架构,即一个系统处理实时数据,另一个系统处理离线/批量数据。管理两个独立的数据路径非常复杂,维护成本高昂。
- 数据管道冗长: 在进行查询时,所有数据都需要先在 Hive 中进行预处理(包括预聚合和非规范化),然后才能传输到 Postgres 进行报告和仪表板展示。这个漫长的过程不仅复杂且浪费计算和存储资源,而且还将数据锁定为单一视图格式——任何架构更改都需要重新配置管道和数据回填。
解决方案
面对这些挑战,腾讯寻求升级。他们对多个数据库系统进行了全面评估。评估的主要指标包括查询性能、弹性、LakeHouse 集成、数据更新功能、易用性、集成选项和许可。
Product | ClickHouse | StarRocks | Presto | Snowflake | Databricks |
---|---|---|---|---|---|
数据更新 | 仅合并读取数据更新,查询性能不稳定 | 实时数据提取+更新支持 | 仅使用 SQL 提取数据,无实时更新 | 支持 | 支持 |
易于使用 | 维护困难,没有集群管理工具 | 易于管理,易于使用 | 无本地存储,相对容易管理 | SaaS 产品,无需管理基础设施 | 用户界面复杂,但相对容易使用 |
一体化 | 仅内部存储,不支持数据湖 | 作为数据湖的查询引擎,效果非常好 | 与多种数据源具有良好的连接性 | 依赖 S3、专有格式 | 仅限 Delta Lake |
执照 | 开源 | 开源 | 开源 | 商业软件 | 商业软件 |
表1详细比较了各数据库系统在查询性能、易用性、一体化程度以及许可等方面的优劣
查询性能 :StarRocks 利用其 MPP 架构,辅以基于成本的优化器 (CBO) 和完全矢量化的执行框架,为单表和多表查询提供快速且可扩展的性能。通过与开放数据湖的无缝集成(具体来说,在我们的测试中,它与 Apache Iceberg 的查询延迟令人印象深刻),StarRocks 增强了我们的 LakeHouse 功能,为增强数据治理铺平了道路。
在我们目前有 300 个节点的生产环境中,在运行其他查询的同时,140 亿行表和 10 亿行表之间的 JOIN 仅用了 44 秒。这展示了 StarRocks 在大规模复杂多表查询方面的性能。
数据更新 : StarRocks 独特的主键表功能支持实时可变数据,我们可以将大多数离线指标转换为实时指标。这不仅加快了我们的决策过程,而且还提供了对用户行为和整体系统性能的最新洞察。
许可: StarRocks 作为 Linux 基金会和 Apache 许可的开源项目,与我们拥抱社区驱动创新的愿景非常一致。
腾讯游戏新数据架构
在新架构中,腾讯游戏将所有数据统一存储到数据湖中,并将 StarRocks 作为所有实时数据的入口点和统一查询层。
所有数据均实时采集到 StarRocks 中,并每小时定期存入数据湖。这样,我们可以在数据湖上实现实时数据和单一事实来源,从而更好地进行数据治理。
结果
通过使用 StarRocks 作为统一分析平台取代旧有数据系统,腾讯能够将实时和批量分析整合到一个系统中。这不仅维护成本更低,而且意味着可能出现故障的部件更少,从而提高了系统的稳定性和可用性。
腾讯游戏完整分析平台
StarRocks 不仅改善了腾讯游戏的数据基础设施,还改变了他们使用数据的方式:
- 实时数据分析指标: 腾讯的游戏日志现在全部进行实时分析。这为他们提供了更多机会,并提供了以前无法获得的见解。
- 摒弃非规范化: StarRocks 的一大亮点是能够执行即时 JOIN 操作。这让腾讯得以避开繁琐的非规范化过程,并将开发效率显著提升 50%。
- 无缝调整分析指标: 放弃非规范化也让腾讯在指标变化方面获得了更高的灵活性。他们不再需要重新配置数据管道,也不再需要在决定进行更改时进行资源密集型数据补填。
- 增强敏捷分析能力: 由于现在可以即时进行数据的聚合和连接操作,因此用户可以轻松通过固定的 SQL 模板访问数据集。这对腾讯的数据用户来说是一个重大改变。无论是维度的调整还是统计逻辑的变化,用户都可以进行临时调整,确保他们的分析保持敏捷和相关性。
腾讯游戏的下一步计划
在 StarRocks 取得初步成功后,腾讯游戏计划在其他几个领域推广使用:
- 在 StarRocks 中构建更丰富的数据类型和特征数据集: 在 StarRocks 中开发更丰富的特定类型和基于特征的数据集,以获得详细的游戏分析和运营洞察。
- 不断优化数据湖的查询性能 :集成StarRocks 物化视图进行本地数据缓存,并优化 StarRocks 中的 Iceberg 元数据存储,以实现更快的过滤和更少的序列化开销。
- 增强数据提取性能: 通过集成 StarRocks 物化视图进行本地数据缓存,并优化 Iceberg 元数据存储于 StarRocks 中的方式,以实现更快的过滤和减少序列化开销。
- 继续为 StarRocks 项目做出贡献: 此前腾讯曾为计算节点做出贡献,并参与了StarRocks 外部目录的 Iceberg V2 表支持的开发,并计划在未来继续为 StarRocks 项目做出贡献。
阅读原文:https://www.starrocks.io/blog/tencent-unifies-their-gaming-analytics-with-starrocks