2016年5月12日,第七届中国数据库技术大会(DTCC 2016)在北京国际会议中心拉开帷幕。作为国内数据库与大数据领域最大规模的技术盛宴,本届大会以"数据定义未来"为主题,云集了国内外顶尖专家,在为期三天的会议中,将围绕MySQL、NoSQL、Oracle、缓存技术、云端数据库、智能数据平台、大数据安全、数据治理、大数据和开源、大数据创业、大数据深度学习等领域的前瞻性热点话题与技术展开深入探讨。据悉,本届大会吸引5000多名IT人士参会。
在下午的NoSQL技术实践专场,来自网易游戏的黄文宇与大家分享了MongoDB在网易游戏中的应用,以及MongoDB服务化的一些经验。
MongoDB在网易游戏的应用
黄文宇,2005年加入网易游戏,已在网易工作超过10年,是网易游戏运维自动化平台负责人,MongoDB Team Leader。负责过非常多游戏的运维,包括前期的大话、梦幻等几个大型端游,现在还负责的有天下、天谕、功夫熊猫等游戏项目。
虽然黄文宇主要的精力放在游戏运维资源平台的架构上,但MongoDB作为数据存储资源恰恰是这个环节的一个重要组成部分。
在网易,MongoDB不仅是端游的数据中心还是手游的数据库,更是周边系统的数据库,因为易用、易扩展、高可用等原因,有过百游戏项目使用MongoDB。
网易将MongoDB服务化实践
服务化缘由
为什么要将MongoDB服务化?黄文宇表示:“刚开始使用MongoDB的时候,MongoDB的资源是由项目SA/DBA搭建与管理。存在以下问题,比较大的阻碍了我们的使用。”
1、学习&运维成本高
2、资源浪费严重
3、交付效率低
4、可用性低
为了解决这些问题,将MongoDB进行服务化是一个比较好的选择。
服务化目标
1、减轻项目DBA/SA的学习及配置成本
2、为每个使用MongoDB的项目提供标准化的服务
3、统一调配及资源整合降低人力及硬件成本
服务提供形式
MongoDB服务化后会以什么样的形式提供?黄文宇表示主要是分成以下4块:
首先最重要的当然是db的资源服务,这块我们主要是以3个config+3个node组成rs的shard的形式提供服务,无论用户申请多少资源,都会以这个形式。如果用户只要1个shard,那会是带3个config的shard,而不是一个简单的rs。
主要是从几个方面考虑这个问题:
1、方便扩展,如果需要横向扩展,把shardkey加上,然后加资源即可。
2、避免不同的程序驱动对rs高可用的不一致情况。
3、虚拟化后config的资源消耗主要是磁盘io,其他cpu、内存、磁盘容量等都几乎可以忽略不计。
4、统一资源形式,如果同时既提供rs也提供shard的话,对MongoDB不怎么熟悉的用户其实是很容易混淆。
服务化成果
最后,黄文宇展示了服务化成果:
1、项目运维不需要关注数据库的搭建与维护
2、硬件成本下降73%
3、资源交付秒达
4、2014年可用性99.99%
5、2015年可用性99.999%
6、2016年可用性99.99%
其中硬件成本下降了73%,黄文宇表示:“主要是虚拟化后,CPU、内存、硬盘达到一个最佳配比得到的收益。而资源交付速度,皆因MongoDB硬件需求相对特殊,需要采购、机房安装、初始化几个过程,整个流程最快也要按周算的,服务化后,给出去的shard实例只是虚拟机的创建,可以实现自助申请,只要1-2min左右即可。”
最后,黄文宇还特别强调,MongoDB的特性(高可用、以扩展、低CPU占用),让它非常适合服务化。