使用MongoDB Atlas简化游戏数据管理。
使用案例: 分析
行业: 媒体
产品: MongoDB Atlas、MongoDB Atlas Global Clusters、MongoDB Atlas Search、MongoDB Atlas Charts、MongoDB Aggregation、MongoDB Atlas Data Federation
合作伙伴: Unity 游戏引擎,Amazon EC2
解决方案概述
在游戏行业,管理玩家个人资料、库存和游戏状态等数据是一项挑战。该解决方案名为 Leafsteroids,使用MongoDB Atlas来简化和改进游戏数据存储。Atlas集群保存玩家个人资料, Atlas Charts启用实时玩家仪表盘, Atlas Search支持用户友好的搜索交互。该解决方案支持全局可扩展性、高效的数据管理和以用户为中心的设计。
参考架构
下图显示了没有MongoDB的游戏数据管理系统:
图 1.不含 Atlas 的参考架构
这种方法包括构建全局查询路由器、全球多个节点之间的复制服务以及集成不同的存储选项。该架构还需要一个单独的搜索引擎和可视化工具,并使用无服务器查询服务将数据联合到可视化工具中。
相比之下,下图显示了使用MongoDB 的游戏数据管理架构:
图2. 包含 Atlas 的参考架构
借助MongoDB Atlas ,您可以使用MongoDB Atlas Global Clusters、Online 存档、 Atlas Search、 Atlas Charts和Atlas Data Federation在单个平台上托管数据、生成可视化并执行搜索。
数据模型方法
下图显示了此解决方案使用的数据模型:
图 3.数据模型方法插图
Recording 表示玩家在某一事件中的游戏玩法,包括得分、着法和统计数据。每个记录都使用扩展引用模式存储 Player 和 Event 数据类型的子集。这种设计通过允许选择性字段嵌入来提高查询性能。此外,它还为将来添加和更改数据提供了灵活性。
在像 PUBG 这样拥有数十亿玩家的大型在线游戏中,数据局部性对于获得最佳体验和满足法律要求至关重要。为了支持这些需求,Players 和 Recordings 集合会根据位置ISO 代码分片的。Atlas Global Clusters将 ISO 国家/地区和细分代码与特定云地区中的分片区域相关联。用于路由查询和写入请求,确保最佳性能。
构建解决方案
有关如何构建此解决方案的详细说明,请参阅Github存储库。
功能和集成
该解决方案提供以下架构功能:
无论玩家位置, Atlas Global Clusters都可确保游戏之旅不间断。为了数据的准确性,玩家信息是根据 ISO 国家/地区代码存储的。
Atlas Online Archive会自动卸载超过 90 天的游戏数据,以优化存储。这对于拥有数百万玩家和游戏运行的游戏特别有用,因为这些游戏会生成大量数据,可能会增加成本并影响性能。此外,该解决方案使用Atlas Data Federation,因此您可以访问权限最新和历史数据。
用户体验亮点
该解决方案为用户提供了以下亮点:
由Atlas Charts支持的玩家仪表盘可确保实时更新游戏中的成就和进度。通过使用Atlas Charts的过滤和嵌入功能,您可以根据玩家和事件重新调整仪表盘的用途。
Atlas Search提供自动完成和模糊匹配等功能,允许玩家在 Web用户界面中搜索自己的昵称。
架构
该解决方案的架构包括以下组件:
游戏客户端:使用Unity3D、 .NET和C#开发
游戏服务器:基于 ASP .NET Web API、 .NET、 C#和MongoDB .NET/ C#驱动程序构建
网站:使用.NET和C#制作为 Blazor 服务器应用程序
步骤
Github存储库中的 README 包含以下过程的更详细版本。
关键要点
全球集群可促进扩展:使用全球集群,从从节点(secondary node from replica set)读取数据,然后写入主节点 (primary node in the replica set),以实现水平扩展并满足全球受众的需求,而不会产生副作用和延迟。
MongoDB 的文档模型可提高灵活性和性能:利用文档模型将单个游戏运行的所有数据存储在单个文档中,但在运行时序列化子集以提高性能。
基于玩家位置的分片数据:通过存储基于 ISO 代码的数据, Atlas Global Clusters启用了性能并简化了可扩展性,允许在不中断服务的情况下添加分片和区域。
作者
Sigfrido Narvaez, MongoDB
Dominic Frei,MongoDB
Hubert Nguyen,MongoDB