公司介绍
竞技世界(北京)网络技术有限公司成立于2007年,主要从事网络游戏研发、运营等相关业务,是国家级高新技术企业。作为大众棋牌竞技化的推动者,该公司秉承“竞技精神、精致产品、精彩世界”的企业使命,旗下“JJ斗地主”休闲竞技游戏平台,为用户提供了包括斗地主、麻将、象棋、掼蛋在内的数十款休闲游戏,玩法多样,充满竞技比赛的乐趣,至今累计注册用户数已超5亿。
竞技世界在不断提升用户游戏体验的同时,也致力于推动棋牌游戏的电竞化发展,其 “JJ斗地主冠军杯”赛事,采用复式团体赛模式,已连续举办14年, 2024年赛事奖金达1000万元人民币,已成为全国观看人数第一的棋牌电竞赛事,深受广大棋牌爱好者喜爱,真正做到了“汇聚天下高手,享受竞技快乐”。
竞技世界扎根北京,在成都、杭州、海南设立有分公司,员工总规模千余人,连续六年进入工信部评选的《中国互联网百强企业榜单》,历经17年发展,公司已成为集众多休闲竞技游戏和优质电竞内容的综合性互联网企业。
版本升级背景
竞技世界旗下某游戏产品采用MongoDB作为玩家数据存储的核心数据库,随着业务的不断发展,数据库版本先后经历了3.4 - 4.4 - 6.0的升级过程。
2024上半财年,公司刚刚完成MongoDB从 4.4到6.0的版本升级。本次升级的主要动因包括:
1)新功能带来的研发友好性
Stable API:MongoDB 5.0推出的Stable API功能,可实现应用程序生命周期和数据库生命周期解耦,简化了MongoDB Server升级过程,实施成本更低;
时序数据和Change Streams优化:5.0及后续版本在时序数据处理和Change Streams方面进行了显著优化,极大地丰富了业务场景的应用可能性,为开发人员提供了更多灵活性和效率。
2)解决4.4版本中的碎片回收成功率问题
由于业务中存在频繁的数据删除操作,导致大量碎片的产生。4.4版本中的碎片整理效果欠佳,compact命令常常无法有效释放碎片。新版本的碎片回收机制能够更高效地管理和释放磁盘空间,提升整体性能。
3)版本生命周期维护
鉴于官方对于之前版本支持和维护的规定。为了确保系统的长期稳定性和安全性,须及时升级到受支持的版本。
4)增强可用性
采用官方原生驱动能够在预期且可接受的时间范围内透明地完成故障转移,保障数据库的高可用性和稳定性。
基于以上考虑, 经过与研发团队沟通,达成了以下升级目标共识:
MongoDB Server版本由4.4升级到6.0版本:经过评估,MongoDB6.0更加符合业务发展的需求。
客户端驱动改为官方驱动,并启动Stable API功能:通过使用官方驱动,确保更好的兼容性和可用性。
版本升级方案
在方案设计阶段,DBA团队提出了两个关键要求:
可回退:一旦在开服前的QA阶段出现突发问题,能够快速恢复到之前的版本。
实施窗口尽可能短:避免长时间停服,确保对用户的影响最小化。
鉴于本次升级属于连续跨版本升级,对于分布式集群而言,原地从6.0回退到4.4的实施复杂度和时间成本较高,且可控性不强。因此DBA团队放弃了原地升级的思路,选择了通过构建新实例并进行版本升级的方案。
但是,由于游戏数据量较大,使用mongodump + mongorestore耗时较长,因此需要选择更高效的工具,如mongoshake或DTS。原本计划构建MongoDB 6.0版本的新实例并同步数据,这需要先事准备:购买一套同等规格配置的MongoDB 6.0实例并初始化相关配置,然后再配置和启动数据同步,并通过数据校验确保源实例和新实例之间数据一致。这个方案在数据量较小的情况下表现优异,但在大体量数据面前,操作时间会较长。
团队经过与MongoDB原厂及阿里云技术专家的充分沟通后,提出了基于时间点恢复构建镜像实例,并滚动升级的方案。

该方案的主要操作步骤如下:
(1) 停服备份:停服后对分片集群实例进行备份。
(2) 按时间点恢复:使用上述备份恢复到新实例。
(3) 滚动升级:通过阿里云MongoDB云控台的“升级数据库版本”功能,分步将新实例从4.4升级到5.0,再从5.0升级到6.0。
(4) 数据校验与访问控制:完成升级后,进行数据校验并开通访问控制。
该方案的优势在于,操作时间相对固定,不受源实例云盘大小和数据量的影响,特别适合数据量较大的实例。与此同时,阿里云MongoDB 的云原生架构形态提供了秒级备份和实例、库、表、行多粒度恢复能力,并且在恢复流程中进行优化,进一步缩短了备份和恢复所需要花费的时间。因此,从操作耗时和业务数据量出发,团队最终选择了这种方案来完成版本升级。
在整个项目实施过程中,研发团队和DBA团队密切协作,顺利完成了新官方驱动的兼容性测试、性能测试和容灾容错测试。
在MongoDB Server版本升级方案的调研阶段,团队与MongoDB原厂以及阿里云研发团队进行了深入沟通,详细了解了相关工具和云产品的功能原理,并进行了多次实操测试和时间量化,确保了升级过程的顺利进行。
收益
此次版本升级为业务带来了多方面的显著收益:
1) 数据库容灾容错能力得到提升
通过使用官方原生驱动,数据库在主节点被动故障时能够更快、更透明地完成故障转移,确保了系统的高可用性和稳定性。
2) 运维效率提升
新版本中的碎片回收机制更加高效,减少了磁盘空间浪费,提升了查询性能。同时,Stable API功能的引入使得后续数据库升级将更加便捷,降低运维成本。
3) 为后续版本升级奠定基础
此次升级将成为一个重要的里程碑版本,为未来的版本升级和技术演进打下了坚实的基础,确保了系统的长期稳定性和扩展性。
通过此次升级,不仅解决了现有系统中的痛点,还积累了数据库数据同步、版本升级的运维经验,为未来的业务发展奠定坚实的基础。
后续规划
阿里云数据库MongoDB版很好的契合了游戏业务场景,并且致力于持续打造对研发人员友好的数据开发平台,新功能也在持续推出,团队后续计划对MongoDB实例统一升级为7.0,实现云上云下版本对齐,并持续调研CDC、数据同步mongosync等功能。
关于MongoDB
MongoDB是全球领先的开发者数据平台,全球范围内数百万开发者以及包括70%的财富百强企业和领先的跨国企业在内的50,000多家客户,将MongoDB作为可信赖的操作型数据库(Operational Database),覆盖广泛的使用场景。
推荐阅读

