网易游戏分享游戏场景中MongoDB运行和分析实践
在游戏行业中,数据库的稳定和性能直接影响了游戏质量和用户满意度。在竞争激烈的游戏市场中,一个优秀的数据库产品无疑能为游戏的开发和后期的运营奠定良好的基础。伴随着MongoDB在不同类型游戏场景中的应用越来越广泛,许多知名的游戏公司都在使用MongoDB来处理他们的游戏数据。
网易游戏自成立以来与广大游戏热爱者一同成长。经过20年的快速发展,网易已跻身全球七大游戏公司之一。作为中国领先的游戏开发公司,网易一直处于网络游戏自主研发领域的前端。目前在网易游戏中,包括手游、业务数据中心以及其他内部产品等在内的多项产品都已广泛应用MongoDB。
综合考虑游戏生态、架构、稳定性和成本等因素,网易游戏的数据库架构采用了多类型服务架构,根据游戏在不同的生命周期进行选型适配。MongoDB支持副本集和分片集群模式,可根据需求进行水平扩展,选择合适的分片策略和副本集设置,为网易游戏提供了灵活性和高可用性的帮助。
如何有计划地分析MongoDB数据的过程行为以便产品决策?
随着游戏行业的不断发展,游戏数据的规模和复杂性也在不断增加。在游戏开发过程中还需要进行大量的数据分析,用以了解玩家行为、优化游戏体验、制定营销策略等。
网易互娱数据库业务负责人郑良榉表示:“我们希望有计划地对MongoDB的过程行为数据进行体系化分析,并应用到常态化管理中,以便在与MongoDB数据库交互的过程中,能够对按需触发的业务进行实时响应。”
灵活的文档模型,让数据分析更从容
MongoDB的灵活文档模型在处理游戏中的复杂数据结构时表现尤为出色。游戏存在不同场景下大量的全量更新和增量更新行为,游戏中包括玩家信息、游戏状态、物品信息等在内的数据结构会频繁发生变化,与此同时,优化占比大的字段还可能带来工作负载的更新。MongoDB采用文档存储的方式,使用JSON格式来存储数据。每个文档可以有不同的字段和结构,这使得它非常适合处理游戏中的复杂数据。通过使用MongoDB,游戏开发人员可以随时添加或修改字段而不需要进行复杂的数据库迁移操作。
当运营需要查证玩家反馈时,比如游戏中出现装备丢失、属性不对、需要查证奖励发放情况等问题,网易游戏内部对文档历史分析提出了时效性(周期性)、可查性(可用性)、对比性(变更差异)和及时性(oplog不带索引)的要求。这是一个既要又要的选择。MongoDB使用副本集来实现数据的冗余和高可用性,而操作日志(oplog)是副本集的核心机制之一。网易游戏能够通过副本集中的oplog实现了与原始文档数据联动管理,在主节点发生故障时,可以根据oplog中的信息快速恢复数据,审计并排查问题。
多场景多应用,也能游刃有余
在一些特定的游戏场景中,历史榜单会保存所有场次的数据,周期性活动的副本战斗需要结算,单一玩家的数据玩法会不断叠加,玩家的装备属性也会越来越复杂……诸如此类的大文档数据会持续增加,从而导致批量更新慢、cache使用异常、队列等待长等问题。网易游戏通过MongoDB的定期、自动巡检,帮助产品及时发现大文档潜在问题,例如数据库负载过高、请求超时、异常错误等,从而采取相应措施,规避线上运营风险。
在游戏运营期间,索引对于服务的访问效率至关重要,无索引行为会导致实例负载变高,严重时会导致整个请求阻塞,影响游戏体验和服务稳定性。依托MongoDB,网易游戏对于人工日常的数据查询行为,在访问入口代码层面实现了实时索引检测与报警,用户可以根据提示是否继续查询行为。同时在系统层面,用户访问可按实例级别配置是否允许无索引查询,以进一步减少非预期内的误操作行为。除了使用索引外,MongoDB还可以通过查询优化来加速热点数据的查询,进一步提升QPS(每秒查询推理响应速度)。
游戏运营中会有一些突发状况,比如高峰期单一玩法异常导致请求突增、某个服务卡住导致整个实例请求阻塞等,此时分析库表级别的访问QPS(非mongostat和mongotop结果)对于找到引起问题的根因点至关重要。借助于 MongoDB 的内置功能,网易游戏实现了实时的库表 QPS 和访问延时采集以帮助产品及时发现瓶颈点。此外,客户端行为的跟踪和分析也能帮助业务发现问题来源,借助MongoDB的CurrentOP功能,网易游戏能够统计业务客户端实时会话情况,并针对当前实例节点操作进行行为检索,还能追踪某个连接操作行为。
与此同时,在数据迁移和数据分布异常的情况下,MongoDB也能有效解决阻碍技术负责人执行的最大障碍——大数据量的数据同步工作及落地后的数据管理,从而提升运维效率。
郑良榉表示,MongoDB的接入只是一个开始,如何更好地贴近业务的使用需要长期的多场景实践、探索与总结,这也是当前持续发展的方向。对MongoDB数据行为的分析能够帮助网易游戏在数据决策方面提供有效参考,从而产生更大的收益和价值。
点击注册,免费开始使用 MongoDB Atlas