写点什么

《迷你世界》亿级玩家都在用的游戏场景推荐系统长啥样?

  • 2023-01-03
    贵州
  • 本文字数:2671 字

    阅读完需:约 9 分钟

《迷你世界》亿级玩家都在用的游戏场景推荐系统长啥样?

本文分享自华为云社区《《迷你世界》亿级玩家都在用的游戏场景推荐系统长啥样?》,作者:GaussDB 数据库。


提到推荐系统,很多人都在电商购物、资讯或娱乐平台中体验过。比如,你刚在某电商 APP 买了一部手机,过两天再登录时,首页推荐中必定有耳机、手机壳等手机配件。


本质上,推荐系统是互联网世界的资源调度系统,决定了用户体验和企业核心竞争力。比如,根据亚马逊 2019 年度报告,其 40%的营收来自内部稳定的推荐系统。如今,推荐系统已不再是电商、互联网行业的专用技术,越来越多行业将其作为核心业务之一。


一个聪明的推荐系统,背后有很多关键技术,KV 数据库便是其中之一。以《迷你世界》游戏场景推荐系统为例,《迷你世界》是国内头部沙盒创意平台,目前月活用户超过 1 亿。通过使用华为云企业级 KV 数据库 GaussDB(for Redis),《迷你世界》的推荐业务不仅成本降低了 60%,而且提升了画像数据承载量,让玩家更容易、更快速找到自己喜欢的游戏场景。


1 中国 TOP1 沙盒游戏的数据存储攻坚战


了解游戏的读者一定知道,沙盒类游戏最吸引人的就是层出不穷的新场景。如何将新个性化场景推荐给最感兴趣的玩家,成为持续提升用户体验的关键。


在《迷你世界》中,推荐系统对两类玩家的体验都至关重要。对于第一次登录的新玩家,茫然不知道该玩哪个游戏场景时,需要及时指引。对于老玩家,则有海量新鲜有趣的游戏场景等待探索。要知道《迷你世界》的 UGC 生态非常活跃,平台上有超过 7000 万创作者,累计创造的场景超过 2 亿个。因此,《迷你世界》推荐系统亟需一个强大的 KV 数据库来承载持续增长的海量场景特征,提升推荐系统的服务效率。


提到 KV 数据库,一般会让人立刻想到 Redis。但在推荐系统这类 AI 场景下,开源 Redis 却显得捉襟见肘,并非最佳选型。经过长期实践和调研,《迷你世界》最终选择了华为云 GaussDB(for Redis)作为推荐业务的核心存储选型。


2 完胜开源版本,GaussDB(for Redis)助力《迷你世界》加速创新


在《迷你世界》的游戏场景推荐系统中,GaussDB(for Redis)主要承载了特征平台的核心特征数据存储功能,起着“承上启下”的作用。因为,在一个推荐系统中,确保特征数据的可靠存储、弹性扩容,是极为关键的一环,这也是 GaussDB(for Redis)在《迷你世界》推荐系统中的重要价值。


早期,《迷你世界》使用开源 Redis 做特征数据存储,开源 Redis 在成本、扩容、可靠性等方面存在诸多短板,越来越无法满足业务高速增长的需求。在华为云 GaussDB(for Redis)帮助下,《迷你世界》整体成本降低 60%,特征数据总承载量提升 3 倍,并大幅提升了玩家的游戏体验。概括来说,GaussDB(for Redis)的优势可以总结为:低成本、高稳定、高可靠、强一致、强扩展、强抗写。


相比开源 Redis 在大数据场景下存在显而易见的痛点, GaussDB(for Redis)更适合存储特征数据:

• 开源 Redis 丢数据 VS 高斯 Redis 提供 DB 级别可靠存储


开源 Redis 中的数据是可丢失的,生产中只适合用在纯缓存场景。开源 Redis 的 AOF 持久化也仅仅是磁盘中保留一个简单的文本文件而已,并不可靠。假如写入速度是 2000 条/秒,那么即使开了 AOF 持久化,故障场景下开源 Redis 也会丢失至少 2000 条数据。《迷你世界》游戏场景推荐系统的特征数据关系到用户体验,长久可靠保存是基本要求。


GaussDB(for Redis)是真正意义上的 KV 数据库,对存储引擎、LSM-tree 存储结构、WAL 日志、menifest 元数据存储、SSTable 文件格式等方面均做了深度优化,搭配华为独有的高性能分布式存储池 DFV,做到数据三副本强一致存储,相当可靠。即使在节点故障场景,GaussDB(for Redis)也能够秒级恢复,业务仅会感知一个小小的“抖动”。

• 开源 Redis 烧钱 VS 高斯 Redis 省钱 40%以上


从成本上看,内存存储的一大特点就是贵,相同容量的内存与极速 SSD 相比,一般价格要贵 10 倍以上。尤其是《迷你世界》这类客户,数据量激增很快,当数据量达到几十 GB、几百 GB,开源 Redis 只会越来越“烧钱”。而且,开源 Redis 自身 fork 问题导致容量利用率低,硬件资源有很大的浪费。


华为云 GaussDB(for Redis)则是帮企业省钱的小能手。一方面,GaussDB(for Redis)的所有数据全部落在高性能分布式存储池,其成本比开源 Redis 降低了 75%~90%。另一方面,华为云 GaussDB(for Redis)自带的数据压缩功能,可以对序列化后的信息进行高压缩比的压缩,实际占用空间仅为开源 Redis 的 50%左右,进一步降低了存储成本。此外,GaussDB(for Redis)会进行自动冷热数据交换,最大程度保证了热数据的低时延访问。

• 开源 Redis 扩容慢,影响业务 VS 高斯 Redis 无感热扩容


如果一个开源 Redis 快写满了,需要从 64G 扩容到 128G,耗时至少半小时。这是因为过程中要将老分片中的数据远程 copy 到新分片,导致耗时久、业务受影响时间长。《迷你世界》此前不得不凌晨熬夜扩容,而且还要承受业务受小时级影响的损失。


华为云 GaussDB(for Redis)采用存算分离架构,天然可以做到按需扩容,即“计算不够扩计算,存储不够扩存储”。在存算分离的架构下,底层数据可以被任意上层计算节点访问,存储扩容过程不发生数据拷贝搬迁,只需修改一个配额即可瞬间完成扩容。因此,GaussDB(for Redis)可以做到秒级扩容,无论是扩节点还是扩存储容量,对业务的影响几乎为 0,真正做到在线无感热扩容。

• 开源 Redis 灌库表现不佳 VS 高斯 Redis 强抗写能力,应对超高并发挑战


特征数据需要定期更新,往往以小时或天为周期进行大规模数据灌入任务。如果存储组件不够“皮实”,大量写入造成数据库故障,将导致整个推荐系统发生异常。开源 Redis 抗写能力不强 ,当大批量写入到来时,推荐系统就容易出问题,影响用户体验。这是由于:


1)单线程架构,灌库过程影响整体读写性能;


2)集群中有一半节点是备节点,它们只能处理读请求。


华为云 GaussDB(for Redis)采用多线程设计+全部节点可写,抗写能力足够强大,从容应对 Spark 灌库压力和实时更新。


此外,基于存算分离架构,GaussDB(for Redis)底层共享资源池可以为《迷你世界》海量游戏场景及创作内容数据提供三副本强一致,实现全球多区域 TB 级游戏场景数据实时同步更新,加速全球玩家的协同创作。


“《迷你世界》有大量的 KV 数据库的需求,华为云 GaussDB(for Redis)存算分离的架构和领先的性能确实非常好地满足了我们产品的需求。”迷你创想云服技术总监刘琪表示。


在现代商业体系中,推荐系统的重要性与日俱增。GaussDB(for Redis)在头部沙盒游戏《迷你世界》的成功应用,证明了其是推荐系统核心数据的极佳选型。不仅如此,GaussDB(for Redis)还展现了多行业场景的适用性。在电商行业,拥有亿级用户的华为商城也采用了 GaussDB(for Redis),其在特征工程平台建设中起到了关键作用。


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
《迷你世界》亿级玩家都在用的游戏场景推荐系统长啥样?_数据库_华为云开发者联盟_InfoQ写作社区