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

摘要:通过使用华为云企业级KV数据库GaussDB(for Redis),《迷你世界》的推荐业务不仅成本降低了60%,而且提升了画像数据承载量,让玩家更容易、更快速找到自己喜欢的游戏场景。

本文分享自华为云社区《​​《迷你世界》亿级玩家都在用的游戏场景推荐系统长啥样?​​》,作者: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),其在特征工程平台建设中起到了关键作用。

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