网易游戏大数据平台上云架构设计

作者|柯维鸿
编辑|邓艳琴
在 5 月底举办的 QCon 全球软件开发大会(广州站)2023 中,网易互娱数据与平台服务部数据服务组离线业务负责人、网易游戏技术专家柯维鸿分享了题为《?易互娱大数据平台出海上云架构设计与实践》,介绍了网易互娱如何通过对存储、算力、数据分层等优化后的云上大数据平台,给游戏数据业务出海节省了大量成本,存储成本为优化前的 50%,算力总成本为优化前的 40%,冷数据成本为优化后线上存储成本 33% 。本文由 JuiceFS 社区(公众号 ID:Juicedata)根据演讲整理 。
完整 PPT 下载:
https://qcon.infoq.cn/2023/guangzhou/presentation/5269
JuiceFS Github 地址:
https://github.com/juicedata/juicefs
2020 年初,随着网易互娱的海外业务增长与海外数据合规的需求,我们开始了网易互娱大数据离线计算平台迁移出海的工作 。前期,我们采取了云主机裸机加上高性能 EBS 块存储的方案 。但是,这个方案存储费用高昂,成本是国内自建机房的数十倍 。于是,我们决定在公有云上构建一个平台,这个平台不仅需要更加适应当前业务场景、与历史业务更为兼容,还要比公有云的 EMR 托管方案更为经济 。我们主要从存储、计算和数据分层生命周期管理三方面进行了成本优化,具体的优化方案将在下文为大家详细介绍 。
最终,这个项目给下游数据业务和分析部门提供了完整 Hadoop 的兼容性,避免了所有业务逻辑推倒重来;给游戏数据业务出海节省了大量成本,存储成本为优化前的 50%,算力总成本为优化前的 40%,冷数据成本为优化后线上存储成本的 33% 。未来随着业务量的增加,成本节约按 10 倍比例节约相应的费用,为出海后的数据化运营等提供有力支持 。
01. 大数据平台海外上云方案设计
在 2020 年,我们开始了一项紧急的出海任务 。在国内,我们的业务一直以自建集群的方式进行部署和运行 。为了在海外能够快速上线,我们紧急上线了一个与国内集群完全相同的解决方案,采用了物理节点构建的一套存算一体的系统 。我们选用了裸金属服务器 M5.metal,并使用 EBS gp3 作为存储 。

网易游戏大数据平台上云架构设计

文章插图
(海外存算一体集群)这套方案的缺点是成本非常高昂,但是它的好处是解决了一个非常痛苦的问题,即我们需要兼容所有历史业务,确保所有历史业务能够快速、立即地在海外运行 。我们的上下游业务可以无缝迁移到海外,并支持每天接近 30 万个作业的调度 。
但是,成本一直是一个不能忽视的问题 。因此,我们需要重新选择方案,以获得性能更优、成本更低的解决方案,并确保兼容性 。根据业务需求和大数据场景的特点,我们从以下几个方向评估如何进行方案选择:
  • 以时间 / 空间换性能;
  • 基于业务场景的实现部署优化;
  • 加入中间件实现兼容性的整合;
  • 充分利用云资源的特性优化成本 。
    Hadoop 上云
一般 Hadoop 上云有下面两种方案,EMR+EMRFS、Dataproc+GCS 。这两种方案就是一个正常出海的姿势 。或者使用一些云原生的平台,例如 BigQuery、Snowflake,Redshift 等做数据查询方案,但是我们没有去用这些方案 。
为什么没有使用 EMR
因为我们所有的业务都非常依赖 Hadoop,我们目前使用的 Hadoop 版本是根据业务需求定制的内部版本,并实现了各种新版本功能向下兼容,有很多内部的需求和优化在 EMR 的 Hadoop 版本未能覆盖 。至于云原生的 BigQuery 等方案对业务来说,是一个改动更大更遥远的方向 。
为什么没有直接使用 S3 存储
由于对数据业务安全的高需求导致我们有复杂的业务权限设计,远超亚马逊 IAM(Identity and Access Management)ROLE 能够实现的上限 。
S3 的性能受限,需要分桶和随机目录等优化措施,对业务使用不透明,调整目录 prefix 去适配 S3 分区或使用更多的桶的方案都需要业务调整已有的使用方法,无法适配我们目前的目录设计 。另外,作为对象存储实现的文件系统,直接对 S3 的目录进行 list 和 du 等操作在超大文件数据情况下,基本上是不可用的,但是这又恰好是大数据场景下大量使用的操作 。
存储选型:HDFS vs 对象存储 vs JuiceFS
我们主要从以下这些维度来评估存储组件 。
业务兼容性:对于我们这种拥有大量存量业务需要出海的情况,兼容性是一个非常关键的考虑因素 。其次,降本增效不仅仅指降低存储成本,还包括资源成本和人力成本的考虑 。兼容性方面,JuiceFS 社区版兼容 Hadoop 生态,但需要在用户端部署 JuiceFS Hadoop SDK 。


推荐阅读