天生一对,当游戏遇上MongoDB

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介: 当游戏遇上MongoDB,会碰撞出什么样的火花,本文为您一一道来。MongoDB针对游戏灵活多变需求、一些专有场景-道具自动过期和附近玩家、高可用、高可扩展、回档、滚服、运营数据分析等场景都有非常好的解决方案,可谓是天生一对。

_

前端时间魔兽这个电影我相信大家都看过了哈,作为一个资深魔兽世界玩家(从公测时候就开始玩,当然现在是已经AFK多年),我对这个电影还是可以给好评的,毕竟里面的一些场景还原度还是蛮高的,特效也做得不错。不过肯定也会有人觉得不满意,毕竟魔兽的游戏做得太成功了(我这里主要指魔兽世界),恢弘的史诗剧情,创新的团队副本设计,丰富的游戏体验,各种令人赞叹的细节。作为一个码农,有时候我也会去思考魔兽世界这个游戏背后他的一些设计和实现,比如他用什么数据库。当然真正用什么数据库这个我是不确定的,我们今天的主题是当游戏遇上MongoDB,所以我们只聊游戏如果采用MongoDB作为数据库有哪些好处。

灵活多变需求

我们知道,游戏的一个特点是需求变化快,为了保持玩家一直有新鲜感,需要不停的往游戏中加入新的元素。就拿一些MMO游戏的装备(道具)系统为例,假如使用传统的关系型数据库来存放这些数据,可能会面临需要经常做表结构修改这样的DDL操作。那如果采用MongoDB的话就不会有这个问题,schema-free的特性可以支持一个表(集合)内包含不同结构的文档。此外,MongoDB直接使用JSON格式进行数据交互,这也是最接近对象模型的,对开发人员来说非常友好。关于如何使用MongoDB进行数据建模可以参考TJ写的MongoDB进阶模式设计

一些专有场景-道具自动过期和附近玩家

现在很多游戏都走游戏免费道具收费的模式,有很多类似道具自动过期的功能,这可以通过MongoDB的TTL索引来轻而易举的实现。同样,现在很多游戏使用地理位置来作为社交系统的一部分,比如附近玩家这样的功能。这也可以直接利用MongoDB的地理位置索引来做。MongoDB原生支持了这些功能,可以说非常方便。

高可用

以前玩魔兽世界的时候,每个礼拜二都要来一次停服维护。当时大家也习惯了,毕竟魔兽世界还是玩点卡的,游戏时间都是自己花钱买的。但对于现在的免费游戏来说,经常停服,可能玩家都会接受不了。对那些日流水好几位数字的游戏公司来说,时间就是金钱,停服维护可能就有种自己在不停烧钱的感觉。所以现在都要追求服务高可用,尽可能减少停服时间。数据库服务通常也是整个游戏服务中的一个重要环节。MongoDB的副本集是一个相当成熟的高可用架构,它通过一主多备结构保证服务的可用性,当主宕机后还存活的备会自动选举出新的主。
replica_set_read_write_operations_primary
![replica_set_trigger_election]
(http://img1.tbcdn.cn/L1/461/1/b110e78a290958ba08dae37521de9d693f63f732)
阿里云数据库MongoDB在MongoDB自身高可用架构下做了进一步增强。采用一主一备一隐藏节点的经典3节点配置,对外暴露两个VIP提供用户访问,在某个节点宕机时自动进行VIP切换,保证用户始终有2个节点可用。需要注意的是,这必须是用户正确配置成副本集访问模式时才生效。

高可扩展

说完高可用,我们来说说高可扩展方面。同样还是魔兽世界,想必很多早期玩家都体验过排队,之所以要排队,主要是因为服务能力不够导致。当然,这通常和数据库无关,不过,一个好的架构师是不会允许有某个环节出现明显的瓶颈的。MongoDB由于其数据相对独立的特性,相比于关系型数据库,较容易进行水平扩展。其Sharding架构已在很多生产环境中久经验证,业内有些公司对其进一步优化后已在管理上百PB的数据。对于运维人员来说也是相当友好,动态扩容和负载均衡都是自动进行的,用户只需要选一个好的shard key即可。
sharded_collectionsharded_cluster_production_architecture

回档

运营游戏有时候会面临不得不对游戏进行回档这样的痛苦选择。因为程序不可避免会有bug的存在,如果有某个bug被恶意利用,亦或者是人皆会犯错误,某个GM不小心手抖发了大量RMB道具,都可能导致较大的经济损失出现。如果游戏不是很完善,没有一个更好的解决方案的情况下,这时候可能就要考虑对游戏进行回档了。对于数据库数据的回档来说,MongoDB提供了一个延迟副本集节点的设定来解决这个问题。即,将某个节点配置成落后于最新数据一定的时间量。
replica_set_delayed_member
当然,这还是很粗粒度的,如果要精确回档到延迟时间内或者更早的时间点,甚至是任意时间点,就还要在备份恢复这块上做更多的工作。阿里云MongoDB近期会推出任意时间点恢复的功能,以满足包括这个场景在内的备份恢复需求,敬请关注。

滚服

现在有很多游戏都采用滚服作为快速增加营收的一个运营手段。如果使用MongoDB作为数据库,可以利用其数据独立带来的好滚优势。此外,阿里云数据库MongoDB的一个功能——从备份点创建实例,简直就是专门为滚服打造的。只需事先为一个新服初始化好实例,然后创建一个备份集,就可以根据这个初始备份集快速创建多个实例,从而达到快速开新服的目的。
_

运营数据分析

现在是大数据时代,通过数据分析辅助运营决策是必不可少的。在数据分析方面,MongoDB提供了Aggregation pipelineMap-Reduce这两个强大的功能。其中Aggregation pipeline使用管道处理模型,提供了过滤、分组、排序等丰富的操作支持,具有较简单的操作性兼顾较好的性能,而Map-Reduce则可以使用JavaScript进行自定义处理,在灵活性上更胜一筹。此外,结合阿里云数据库MongoDB还可以使用阿里云的E-MapReduce利用云上生态系统中的其他数据存储系统如OSS、RDS等。数据可以在云上自由流转,发挥更大的价值。

总结

综上所述,MongoDB有如此多的适合于游戏开发场景的特性,还等什么呢?赶快来阿里云购买使用吧。目前阿里云数据库MongoDB采用的是3.2版本WiredTiger存储引擎,售卖的是3节点高可用副本集架构,Sharding也会在今年下半年推出。我们拥有由官方认证DBA组成的专业源码维护团队,致力于为用户提供更好的云数据库MongoDB服务,让大家用得更加省心!

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
5月前
|
存储 监控 NoSQL
MongoDB助力腾讯游戏 优化游戏开发体验
无论在功能还是性能上,MongoDB都很好地契合了游戏业务场景,带给腾讯游戏的不只是功能价值,还有运维价值
MongoDB助力腾讯游戏 优化游戏开发体验
|
8月前
|
监控 NoSQL 安全
MongoDB在游戏行业方案介绍及最佳实践
MongoDB在游戏行业方案介绍及最佳实践
517 1
|
12月前
|
存储 NoSQL Cloud Native
【活动报名】阿里云MongoDB在游戏行业的开发实践
本期研讨会将MongoDB本身特性与游戏行业的场景相结合,简述阿里云数据库MongoDB版如何助力游戏行业应用的开发与架构优化,从而助力行业的发展,并分享相关案例作为参考。
|
运维 NoSQL Cloud Native
【活动】阿里云联合MongoDB助力游戏企业高效开发
阿里云数据库MongoDB版在部署架构的灵活性以及服务可用性、数据可靠性、安全性、运维成本等方面有突出的优势
【活动】阿里云联合MongoDB助力游戏企业高效开发
|
存储 运维 监控
当游戏爱上MongoDB!阿里云&MongoDB中国区域游戏行业私享会
始于2019年底的新冠疫情改变了我们的生活方式,游戏成为了很多人排遣寂寞的一种方式,由此带来了游戏市场的异常火爆。游戏市场比拼的是谁能更快速地开发迭代,让玩家体验更佳,因此能够敏捷开发、快速扩展、全球部署和轻运维的数据库产品无疑将为游戏的开发和后期运营奠定良好的基础。 诚邀您与Mongo DB、阿里云数据库专家团队, 以及游戏行业同行共同探讨如何使用Mongo DB帮您打造全球化高效、易用、稳定的数据库架构,并为您详细解读MongoDB5.0新特性在游戏行业的最佳实践。
487 0
当游戏爱上MongoDB!阿里云&MongoDB中国区域游戏行业私享会
|
存储 监控 NoSQL
阿里云|MongoDB中国区域游戏行业私享会
原厂技术加持,客户现身说法。
251 0
|
NoSQL MongoDB
12月23日(周四)阿里云|MongoDB中国区域游戏行业私享会重磅来袭!
12月23日(周四)阿里云|MongoDB中国区域游戏行业私享会重磅来袭!
331 0
12月23日(周四)阿里云|MongoDB中国区域游戏行业私享会重磅来袭!
|
Web App开发 监控 安全
游戏安全资讯精选 2017年第十五期:网络安全人才短缺是安全事件的根源,游戏行业为典型;点评最新十大Web安全隐患;MongoDB最新漏洞缓解建议
网络安全人才短缺是安全事件的根源,游戏行业为典型;点评最新十大Web安全隐患;MongoDB最新漏洞缓解建议
2484 0
|
1月前
|
存储 NoSQL MongoDB
MongoDB如何创建数据库
MongoDB如何创建数据库

相关产品

  • 云数据库 MongoDB 版