网易游戏分享游戏场景中MongoDB运行和分析实践

server/2024/12/18 10:29:21/

游戏行业中,数据库的稳定和性能直接影响了游戏质量和用户满意度。在竞争激烈的游戏市场中,一个优秀的数据库产品无疑能为游戏的开发和后期的运营奠定良好的基础。伴随着MongoDB在不同类型游戏场景中的应用越来越广泛,许多知名的游戏公司都在使用MongoDB来处理他们的游戏数据。

网易于2001年正式成立在线游戏事业部,与广大游戏热爱者一同成长。经过20年的快速发展,网易已跻身全球七大游戏公司之一。作为中国领先的游戏开发公司,网易一直处于网络游戏自主研发领域的前端。目前在网易游戏中,包括手游、端游数据中心以及其他内部产品等在内的多项产品都已广泛应用MongoDB。

综合考虑游戏生态、架构、稳定性和成本等因素,网易游戏数据库架构采用了多类型服务架构,根据游戏在不同的生命周期进行选型适配。MongoDB支持副本集和分片集群模式,可根据需求进行水平扩展,选择合适的分片策略和副本集设置,为网易游戏提供了灵活性和高可用性的帮助。

如何有计划地分析MongoDB数据的过程行为以便产品决策?

随着游戏行业的不断发展,游戏数据的规模和复杂性也在不断增加。在游戏开发过程中还需要进行大量的数据分析,用以了解玩家行为、优化游戏体验、制定营销策略等。

网易互娱数据库业务负责人郑良榉表示:“我们希望有计划地对MongoDB的过程行为数据进行体系化分析,并应用到常态化管理中,以便在与MongoDB数据库交互的过程中,能够对按需触发的业务进行实时响应。”

灵活的文档模型,让数据分析更从容

MongoDB的灵活文档模型在处理游戏中的复杂数据结构时表现尤为出色。游戏存在不同场景下大量的全量更新和增量更新行为,游戏中包括玩家信息、游戏状态、物品信息等在内的数据结构会频繁发生变化,与此同时,优化占比大的字段还可能带来工作负载的更新。MongoDB采用文档存储的方式,使用JSON格式来存储数据。每个文档可以有不同的字段和结构,这使得它非常适合处理游戏中的复杂数据。通过使用MongoDB,网易游戏的开发人员可以随时添加或修改字段而不需要进行复杂的数据库迁移操作。

当运营需要查证玩家投诉时,比如游戏中出现装备丢失、属性不对、需要查证奖励发放情况等Bug,网易游戏内部对文档历史分析提出了时效性(周期性)、可查性(可用性)、对比性(变更差异)和及时性(oplog不带索引)的要求。这是一个既要又要的选择。MongoDB使用副本集来实现数据的冗余和高可用性,而操作日志(oplog)是副本集的核心机制之一。网易游戏能够通过副本集中的oplog实现了与原始文档数据联动管理,在主节点发生故障时,可以根据oplog中的信息快速恢复数据,审计并排查问题。

多场景应用,也能游刃有余

在一些特定的游戏场景中,历史榜单会保存所有场次的数据,周期性活动的副本战斗需要结算,单一玩家的数据玩法会不断叠加,玩家的装备属性也会越来越复杂……诸如此类的大文档数据会持续增加,从而导致批量更新慢、cache使用异常、队列等待长等问题。网易游戏通过MongoDB的定期、自动巡检,帮助运维人员及时发现潜在问题,例如数据库负载过高、请求超时、异常错误等,从而采取相应措施,规避线上运营风险。

游戏维护期间,由于突发情况可能会增加一些索引,索引的创建与否取决于业务需求。如果根据业务判断可以创建,那它就可以继续创建下去。如果因为负载高影响到业务的稳定性,那就需要尽快终止。依托MongoDB,网易游戏从代码层面实现了实时检测与报警,用户访问可按需配置是否允许无索引查询,减少了非预期内的误操作行为。除了使用索引外,MongoDB还可以通过查询优化来加速热点数据的查询,进一步提升QPS(每秒查询推理响应速度)。

游戏运营中会有一些突发状况,比如高峰期单一玩法异常导致请求突增、某个服务卡住导致整个实例请求阻塞以及出现一键批量 KILL长时间会话的误操作。借助MongoDB的强大功能,网易游戏能够统计业务客户端实时会话情况,并针对当前实例节点操作进行行为检索,还能追踪某个连接操作行为。此外,在数据迁移和数据分布异常的情况下,MongoDB也能有效解决阻碍技术负责人执行的最大障碍——大数据量的数据同步工作及落地后的数据管理,从而提升运维效率。

郑良榉表示,MongoDB的接入只是一个开始,如何更好地贴近业务的使用需要长期的多场景实践、探索与总结,也是当前持续发展的方向。对MongoDB数据行为的分析能够帮助网易游戏在决策方面提供有效参考,从而产生更大的收益和价值。


http://www.ppmy.cn/server/151147.html

相关文章

7.Linux - 安装MySQL、Tomcat、Nginx、RabbitMQ、Redis

Linux - 安装MySQL 文章目录 Linux - 安装MySQL一、MySQL 5.71.1 安装1.2 配置 二、MySQL 8.x2.1 安装2.2 配置 三、Tomcat安装3.1 安装 JDK3.2 Tomcat(整的不行) 四、Nginx4.1 安装 五、RabbitMQ5.1 安装 六、Redis6.1 安装 一、MySQL 5.7 1.1 安装 我…

Linux练习

1、找到 useradd 命令,将该命令文件移动到 /tmp 目录中,并重命名为 useradd_backup which useradd cp /usr/sbin/useradd /tmp/useradd_backup 2、使用 vim 等相关命令创建用户 usertest, 该用户使用 /usertest 目录作为家目录 [rootlocalhost ~]# mkd…

【电路笔记】-逻辑与非函数和逻辑或非函数

逻辑与非函数和逻辑或非函数 文章目录 逻辑与非函数和逻辑或非函数1、逻辑与非函数2、逻辑或非函数逻辑与非函数:仅当所有输入均为 true 时,逻辑 NAND 函数输出才为 false,否则输出始终为 true。 逻辑或非函数:仅当所有输入均为假时,逻辑或非函数输出才为真,否则输出始终…

【python从入门到精通】-- 第七战:字典

🌈 个人主页:白子寰 🔥 分类专栏:重生之我在学Linux,C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持…

在clion中使用MySQL的教程

首先就是配置好东西,也是非常简单的: 1.把mysql安装目录(其中的lib好像)中的2个文件复制到下面就行 2.然后配置,这个文件 cmake_minimum_required(VERSION 3.24) project(2024_12project)include_directories(D:\\mys…

基于Clinical BERT的医疗知识图谱自动化构建方法,双层对比框架

基于Clinical BERT的医疗知识图谱自动化构建方法,双层对比框架 论文大纲理解1. 确认目标2. 目标-手段分析3. 实现步骤4. 金手指分析 全流程核心模式核心模式提取压缩后的系统描述核心创新点 数据分析第一步:数据收集第二步:规律挖掘第三步&am…

debian12学习笔记

前置条件 基于debian12官网的qcow2格式文件进行操作 安装ssh 登录虚拟机后安装ssh服务端 apt install openssh-server配置国内源 新增/etc/apt/sources.list.d/tsinghua.list 使用清华大学的源 https://www.cnblogs.com/shanhubei/p/18104430 deb https://mirrors.tuna.t…

GPUImage for Android 如何使用这个 glsl文件

使用 GPUImage for Android 加载和应用自定义 GLSL 文件(例如你的 transition 文件)的方法如下: 1. 准备 GLSL 文件 确保你的 GLSL 文件已经调整为 GPUImage 的格式。对于你的自定义 GLSL 文件,GPUImage 期望包含以下结构&#x…