网易蜂巢(云计算基础服务)MongoDB服务重磅来袭
此文已由作者温正湖授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
MongoDB是目前最为流行的NoSQL数据库,在2017年1月新鲜出炉的数据库权威排行榜上,MongoDB超越PostgreSQL,重回第四宝座,是前五中唯一的NoSQL数据库,遥遥领先其他NoSQL数据库。
MongoDB官方调查得出结论:“MongoDB is generally a good fit for 60%-80% of the applications you may be building today.”。为什么MongoDB能够如此通用且受欢迎?原因在于MongoDB既有关系型数据库的强大查询功能、强一致性和丰富索引功能的优点,同时又具备NoSQL数据库灵活的数据模式(JSON-Style)、更好的扩展性和更高的性能。MongoDB集关系型数据库和NoSQL数据库的精华于一身。
首先,MongoDB具有灵活动态的文档模型(schema-free, document-oriented):MongoDB是文档型的NoSQL数据库,数据以文档的形式在MongoDB中保存,文档实际上就是一个个JSON/BSON字符串,非常直观易懂主流的计算机语言如Java、Python等对JSON都有很好的支持;
其次,提供了基于复制集(Replica Set)的高可用框架:复制集提供领先的服务高可用和读写负载均衡方案,新节点加入到复制集中会自动进行数据初始同步(Initial Sync),无需人工干预;若复制集的Primary节点宕机,MongoDB会自动进行主从切换,在大多数节点在线的情况下,自动地快速选出新的Primary并恢复写服务,同样无需人工干预;
再次,提供了数据在线水平扩展机制(Sharding):Sharding提供了完善的业务数据和负载水平扩展的机制,每个shard都保存业务的一部分数据,shard可以配置为复制集,确保shard上数据的高可用性。相比复制集,sharding在部署和管理上都复杂很多,只有当业务的数据量达到单个复制集无法支撑、或者业务的负载超过了复制集的服务能力的时候,才需将复制集平滑升级为Sharding。
此外,MongoDB还拥有强大的索引能力,支持创建唯一索引、二级索引、TTL索引和地理位置索引等,在此基础上,通过explain()和hint()命令还可以查看查询语句的执行计划、强制查询走某个索引,这些特性可媲美关系型数据库。
网易蜂巢已于2016年底重磅推出MongoDB服务,使用蜂巢MongoDB服务,您除了能够体会到上述所提的MongoDB强大功能,还能够进一步享受最新的MongoDB 3.4版本、数据私网内安全访问、全面而灵活的实例监控、节点故障快速恢复、高效的数据自动备份等服务。
a、基于MongoDB 3.4的私网实例
在网易蜂巢云平台下,您只需为MongoDB实例取个名称,再点击一次鼠标就能够快速完成一个MongoDB 3.4实例的创建。网易蜂巢是业界第一个上线MongoDB 3.4版本的云服务提供商(不包括MongoDB官方的Altas平台)。MongoDB 3.4相比之前版本提供更为强大的功能,修复了一直困扰用户的多个Bug,提供更高更稳定的性能,是您部署新业务的最佳选择。
蜂巢MongoDB实例为3个节点组成的复制集,1个Primary节点,2个用户可见的Secondary节点,通过三个副本保证您数据的高可靠性。您可以通过设置Driver连接参数将业务读请求路由到Secondary节点,分摊Primary节点的读业务压力,提供更为强劲的性能表现。在MongoDB实例控制台详情Tab页,您能够一目了然得获取实例信息。
蜂巢MongoDB服务为每个实例提供一个浮动IP,该浮动IP作为MongoDB Driver的URI种子用于业务访问MongoDB服务,浮动IP始终位于Primary节点上,若Primary发生变化,则浮动IP会飘到新的Primary节点。实例除了浮动IP外,复制集节点各有一个固定IP,只有在节点重建场景下,固定IP才会被更换。
b、数据私网内安全访问
蜂巢MongoDB的浮动IP和固定IP均位于蜂巢实例所属用户的私有网络中,无法通过公网进行访问,除非连上了该用户的私有网VPN,确保MongoDB服务的安全性,让您远离黑客的骚扰。
蜂巢MongoDB提供readWriteAnyDatabase权限的账号,满足对MongoDB进行的集合进行增删改查(CRUD)、创建集合/索引等日常操作。用户只能在蜂巢MongoDB云控制台修改账号的密码。
对于最近在微信中炒得很火的关于很多国内外用户的MongoDB服务受黑客攻击并威胁交赎金的事情。在此,只想说:挂公网IP、不启用安全认证、不设置访问密码这么low的做法,作为最为专业而有态度的网易蜂巢服务,以上这些都是不可能发生的。
c、节点故障快速修复
蜂巢MongoDB提供故障自动修复能力,能够处理节点宕机、节点数据过旧、节点网络分区等各种复制集故障。
节点宕机包括mongod宕机、系统宕机、Agent宕机等。mongod宕机原因可能是mongod本身bug导致、mongod所在系统OOM导致进程被kill掉;系统宕机指的是OS宕机,导致整个复制集节点无法访问;Agent宕机指的是部署在复制集节点用于执行管理操作的Agent进程宕机或OOM导致Agent无法正常执行操作命令。在这之中,mongod宕机最容易发生。
节点数据过旧发生在Secondary节点,原因是由于opLog集合设置过小使部分oplog未应用到该Secondary节点就已经被覆盖,导致该节点无法再跟上其他节点进行复制,数据变得stale不可访问。
节点网络分区是由于复制集中不同节点将网络通信出现挂载,导致相互间或单向无法连通。该场景可能是网络设置的问题,或者是网络故障导致。在生产环境中时有发生,但在蜂巢MongoDB下,网络分区出现概率很小,蜂巢底层网络服务能够确保网络连通。
针对上述不同故障,蜂巢MongoDB服务采取不同的故障恢复方法,对于最常见的mongod宕机场景,通过重启进行修复。下图所示为Primary mongod进程宕机重启修复的场景。
其他场景,无法通过重启来解决,则直接进行重建。下图所示为Primary 系统宕机重建的场景。
总之,通过对故障节点进行重启、重建等方式进行处理,确保MongoDB复制集快速恢复到3节点均可用的正常状态。
d、全面的实例监控
蜂巢MongoDB提供了国内公有云服务最为全面和灵活的实例监控功能。复制集的每个节点均有30余种监控指标,包括系统资源、数据库资源、性能、复制集和日志等多个监控维度,相比业界其他公有云服务,蜂巢MongoDB的监控粒度更细,覆盖更全面。
您可以选择查看复制集中任一节点的监控数据,还可以选择查看您关心的某一时间段的数据,调整监控数据点的时间间隔,数据的统计指标。
更为贴心的是,用户还可以根据业务需求,自定义监控视图版面,自由组合监控指标,仅呈现对业务最为重要的监控数据。
e、数据备份和恢复
蜂巢MongoDB基于LVM snapshot进行数据物理备份,相比使用mongodump的逻辑备份方式,基于LVM的物理备份优势明显:物理备份不会因为逻辑查询导致WiredTiger Cache中的热点数据被污染、直接拷贝数据文件性能更高、数据恢复时无需进行请求重放等。
通过在创建LVM snapshot前后使用db.fsyncLock()/db.fsyncUnlock()命令,物理备份能够非常方便得获取一致性数据快照,而mongodump由于在完成数据全量备份后,还需要拷贝备份期间产生的opLog才能达到一致性备份点,如果此时有部分opLog已经被覆盖,那么就会导致本次备份失败。
为了进一步减小备份对业务的影响,蜂巢MongoDB的备份操作只允许在Secondary节点进行,默认情况下,我们会选取数据最新的Secondary节点作为备份源。
用户除了随时能够对实例进行手动备份外,还可以设置在业务低峰期对实例进行周期性地自动备份,将这一切托管给蜂巢MongoDB的备份模块。基于已有的备份,通过点击“恢复”可以快速恢复出一个新的MongoDB实例(而不是覆盖当前的MongoDB实例)。需要强调的是,蜂巢MongoDB的备份是免费的,这进一步降低了客户的使用成本。
除此之外,用户还可通过实例管理控制台修改账号密码、实例名称、自动备份参数、查看mongod运行日志和对实例进行的操作等。
蜂巢MongoDB服务由业界著名的数据库专家姜承尧负责产品和架构设计,免费提供售前技术支持。为您提供最好地MongoDB服务的同时,我们的服务价格也是业界最具竞争力的。最后,如果你的业务满足下面一个或多个特点,那么选择MongoDB是个正确的决定:
无需要跨文档或跨表的事务及复杂的join查询支持
敏捷迭代的业务,需求变动频繁,数据模型无法确定
存储的数据格式灵活,不固定,或属于半结构化数据
业务并发访问量大,需数千的QPS
TB级以上的海量数据存储,且数据量不断增加
要求存储的数据持久化、不丢失
需要99.999%的数据高可用性
需要大量的地理位置查询、文本查询
网易云计算基础服务深度整合了 IaaS、PaaS 及容器技术,提供弹性计算、DevOps 工具链及微服务基础设施等服务,帮助企业解决 IT、架构及运维等问题,使企业更聚焦于业务,是新一代的云计算平台,点击可免费试用。
网易云免费体验馆,0成本体验20+款云产品!
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 深入解析 SQL Server 高可用镜像实现原理
【推荐】 遭遇各种内容监管,有些企业到底欠缺的是什么,仅仅是价值观吗?
【推荐】 关于网易易盾的加固保护
网易蜂巢(云计算基础服务)MongoDB服务重磅来袭的更多相关文章
- 网易蜂巢微服务架构:用RabbitMQ实现轻量级通信
本次分享内容由三个部分组成: 微服务架构与MQ RabbitMQ场景分析与优化 RabbitMQ在网易蜂巢中的应用和案例分享 1微服务架构与MQ 微服务架构是一种架构模式,它将单体应用划分成一组微小的 ...
- 云计算服务模型,第 1 部分: 基础架构即服务(IaaS)
英文原文:Cloud computing service models, Part 1: Infrastructure as a Service 本文介绍三个云类别中的第一个:基础架构即服务(infr ...
- 初识云计算的三种服务模式 (IaaS SaaS PaaS)
近期公司在使用其它云服务的同一时候.要封装自己的云服务,以下作为开发产品前的热身.来了解云计算中的三种服务模式,笔者也是从网络上查找,进行综合总结.请拍.. 三种服务模式 依据如今最经常使用.也就是比 ...
- IaaS、PaaS、SaaS是云计算的三种服务模式
IaaS.PaaS.SaaS是云计算的三种服务模式 1. SaaS:Software-as-a-Service(软件即服务)提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备 ...
- 将MongoDB服务加入随机启动
将MongoDB服务加入随机启动 vi /etc/rc.local 使用vi编辑器打开配置文件,并在其中加入下面一行代码 /usr/local/mongodb/bin/mongod -dbpath=/ ...
- 配置mongoDB服务
上一节说到mongoDB的环境搭建,但是那种方法启动mongoDB太繁琐了. 今天先说说简化mongoDB启动的配置. 首先在命令行中运行的”C:\Program Files\MongoDB 2.6 ...
- Linux下MongoDB服务安装
Linux下MongoDB服务安装 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据 ...
- J2EE基础之Web服务简介
J2EE基础之Web服务简介 1.什么是Web服务? 在人们的日常生活中,经常会查询网页上某城市的天气信息,这些信息都是动态的.实时的,它是专业的气象站提供的一种服务.例如,在网上购物时,通常采用网上 ...
- MongoDB服务重启及后台运行解决方法
1 在MongoDB 安装目录下 新建一个test文件夹 mkdir /test 2 切换到MongoDB的安装目录(可通过 find -name 'mongod'命令查找安装目录)下 执行: bin ...
随机推荐
- 正則表達式--js使用案例
前言:在前端页面使用中.遇到日期格式的验证.開始使用了一款表单控件验证.可是不兼容!!并且使用起来还受到非常大约束.所以就决定自己写原生js. 为了完毕日期格式的验证.第一步,当然是学会使用正則表達式 ...
- Python基础语法05--函数模块
Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...
- 【转载】FAT12文件系统之引导扇区结构
FAT12文件系统之引导扇区结构 文件系统即文件管理系统,是操作系统的重要组成部分之一,如果需要开发底层磁盘驱动或编写自己的操作系统,就必须详细了解文件系统. FAT12是Microsoft公司DOS ...
- Linux input子系统实例分析(一)
这是一个简单的输入设备驱动实例.这个输入设备只有一个按键,按键被连接到一条中断线上,当按键被按下时,将产生一个中断,内核将检测到这个中断,并对其进行处理.该实例的代码如下: 1: #inclu ...
- [PHP]PDO调用存储过程
1. 数据库中已创建存储过程user_logon_check, PHP调用示例如下, <?php $dsn = 'mssql:dbname=MyDbName;host=localhost'; $ ...
- php利用cookie防止重复提交解决办法
原理:如果数据通过了上边的两次验证,说明数据是合法有效的数据,这时候我们把提交的数据串接为一个字符串,并用MD5加密后得到一个MD5的值. 接着我们把这个值通过Cookie放进客户端,当用户下一次提交 ...
- 宠物连连看2完整Android代码项目
宠物连连看2完整代码,该源代码支持多种风格的连连看游戏的,如有国旗类的连连看,还有宠物连连看的等,主要的功能实现了无尽关卡挑战模式.还有催命倒计时,以及链接提示,暂停.多样图片集,挑战眼力和速度等,而 ...
- Serializable 序列化 The byte stream created is platform independent. So, the object serialized on one platform can be deserialized on a different platform.
Java 序列化接口Serializable详解 - 火星猿类 - 博客园 http://www.cnblogs.com/tomtiantao/p/6866083.html 深入理解JAVA序列化 - ...
- Hadoop_stack_cmd
HDFS命令基本格式:Hadoop fs -cmd < args > HDFS命令基本格式:Hadoop fs -cmd < args > ls 命令 hadoop fs -l ...
- MTK平台下Battery驱动分析
主要涉及代码: Kernel: kernel-3.10\drivers\power\mediatek\ kernel-3.10\drivers\misc\mediatek\mach\mt6580\&l ...