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

news2025/1/14 0:44:39

导读:中国TOP1沙盒游戏,如何解决数据存储难题?

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

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

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

 

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

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

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

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

 

完胜开源版本,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),其在特征工程平台建设中起到了关键作用。

END

本文为「智能进化论」原创作品。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【信息安全】seed-labs实验-Secret-Key Encryption Lab

目录Task 1: Frequency AnalysisTask 2: Encryption using Different Ciphers and ModesTask 4: PaddingTask 5: Error Propagation – Corrupted Cipher TextTask 6: Initial Vector (IV) and Common MistakesTask 6.1. IV ExperimentTask 6.2. Common Mistake: Use the Same …

python源代码打包成为exe文件

目录标题前言下载安装模块(pyinstaller)执行打包命令1、在cmd中进入项目文件2、执行pyinstaller命令成exe文件3、找到exe文件报错以及解决报错X1解决方法:报错X2解决方法:写在最后前言 大家都知道我们在pycharm中编写的源代码&am…

如何在 15 分钟内度量 DORA 指标?

在这篇文章中,我们将介绍 DevOps 四个关键指标——DORA 指标是什么,其度量难点,以及如何基于开源工具快速实现 DORA 指标的持续追踪。如果你熟悉 DORA 指标,可以直接跳到本文第二部分。 什么是 DORA 指标? DORA 的全…

设备树的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、设备树的概念?二、设备树的作用三、如何使用设备树1.设备树的位置2.设备树的语法认识DTC、DTS、DTSI、DTB设备节点信息3.添加自己的设备树节点4.…

STM32MP157驱动开发——SPI驱动

STM32MP157驱动开发——SPI驱动一、简介1.SPI介绍2.STM32MP1 SPI介绍3. ICM-20608 简介4.Linux下的SPI框架二、驱动开发1)IO 的 pinctrl 子节点创建与修改2)SPI 设备节点的创建与修改3)ICM20608驱动4)测试App5)运行测试…

【分享】订阅用友U8集简云连接器同步费用审批数据至用友U8系统

方案简介 集简云通过与钉钉连接平台深度融合,实现OA审批通过后,将采购、报销、收款、售后等费用审批单数据自动同步至用友U8系统,大大提高了企业日常采购、报销、付款等的工作效率,实现企业业务流程的自动化,为企业降…

Docker的数据管理

目录 一、数据卷 二、数据卷容器 三、容器互联 容器中管理数据主要有两种方式: 数据卷(Data Volumes)数据卷容器(Data Volume Dontainers) 一、数据卷 数据卷是一个供容器使用的特殊目录,位于容器中。可…

5点电容式触摸屏控制芯片GT811介绍

5点电容式触摸屏控制芯片GT811简介 5点电容式触摸屏控制芯片GT811,采用投射式电容检测原理,由16个驱动通道与10个感应通道组成触摸检测网络,通过内置模拟放大电路、数字运算模块,及高性能MPU得到实时准确的触摸信息,并…

rocketmq安装

链接:https://pan.baidu.com/s/14ziQH62MeYmM8N6JsH5RcA 提取码:yyds 下载rocketmq-all-4.9.3-bin-release.zip 下载、修改配置 mkdir -p /app/rocketmq cd /app/rocketmqunzip rocketmq-all-4.9.3-bin-release.zip cd rocketmq-4.9.3/修改 配置文件&…

F28335第十六篇——Flash操作

文章目录前言配置方法擦除函数编写和校验函数前言 本文主要介绍如何对DSP28335进行Flash操作。 本文主要参考资料: TI.Flash2833x_API_Readme DSP的Flash操作需要借助官方提供API。官方提供的API主要完成Flash的擦除,编写,校验三种功能。…

八、Java 15 新特性

八、Java 15 新特性 JDK 15 在 2020 年 9 月 15 号正式发布了!根据发布的规划,这次发布的 JDK 15 将是一个短期的过度版,只会被 Oracle 支持(维护)6 个月,直到明年 3 月的 JDK 16 发布此版本将停止维护。而…

VUE3-生命周期钩子《六》

目录 1.onMounted() 2.onUpdated() 生命周期的作用,页面加载的时候,主动执行某些程序。生命周期钩子有很多种,每一种都是有顺序的,如果不按照顺序执行的话,那么就不会触发某种效果,所以先要了解生命周期钩…

Java Web高级面试题(一)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java面试题…

常用的工具网站(网址 + 效果图)

一,阿里图标库 https://www.iconfont.cn/?spma313x.7781069.1998910419.d4d0a486a 二,AI人工智能图片放大 https://bigjpg.com/zh 三,一个有情怀的免费PPT模板下载网站! https://www.ypppt.com/ 四,照片抠图…

AOP技术

目录 一、简介 1.1、OCP原则 1.2、AOP介绍及使用场景 二、AOP在项目中的使用 2.1、集成使用 2.2、定义全局异常通知 2.3、AOP注解的含义 2.4、多个切面的执行顺序 三、通知的执行顺序(基于spring-aop5版本) 四、常用的四种切入点表达式 4.1、…

【技术分享】手机端代理网络共享至win电脑端

【技术分享】手机端代理网络共享至win电脑端使用前提工具准备具体步骤1. 打开并实现安卓模拟器内的vP|n2. 打开并配置安卓模拟器内的Proxy Server3. 配置win的代理4. 完成使用前提 手机端具备代理功能,而电脑端不具备;希望电脑端使用手机端的代理功能上…

嵌入式技术之IAP,自从有了它老板再也不担心我的代码了!(中)

上篇文章我们一起学习了IAP的工作原理和IAP包含的3个重要功能:数据交互、数据存储和程序跳转。 这3个重要功能称为“IAP的三板斧”,接下来我们看这三板斧具体完成哪些细节工作,如何实现这三板斧。 1.数据交互 数据交互的功能是IAP核心功能…

Gson解析JSON

1.介绍 Gson是Google提供的处理JSON数据的Java类库&#xff0c;主要用于转换Java对象和JSON对象。 2.依赖 <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <dependency><groupId>com.google.code.gson</groupId><artifac…

python协程--yield和yield from

字典为动词“to yield”给出了两个释义&#xff1a;产出和让步。对于 Python 生成器中的 yield 来说&#xff0c;这两个含义都成立。yield item 这行代码会产出一个值&#xff0c;提供给 next(...) 的调用方&#xff1b;此外&#xff0c;还会作出让步&#xff0c;暂停执行生成器…

Web应用怎样获取Access Token?

1.在联盟创建服务器应用 参考文档&#xff1a;开发准备 2.获取用户级Access Token 2.1 获取code 参考文档&#xff1a;接入华为帐号获取凭证 2.1.1 先按照跳转链接进行配置url https://oauth-login.cloud.huawei.com/oauth2/v3/authorize? response_typecode& acces…