MongoDB 第三期:托管 MongoDB 存储服务

一、业务概述

1、简介

MongoDB是一个开源的、基于分布式的、面向文档存储的非关系型数据库。是非关系型数据库当中功能最丰富、最像关系数据库的。MongoDB由C++编写, MongoDB可以运行在Windows、unix、OSX、Solaris系统上,支持32位和64位应用,提供多种编程语言的驱动程序。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB高性能、易部署、易使用,存储数据非常方便。MongoDB最大的特点是支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

2、架构

托管平台提供的MongoDB存储架构是三节点副本集的高可用架构,三个数据节点位于不同的物理服务器上,自动同步数据。Primary节点提供服务(一般情况),当Primary节点出现故障,系统自动从两个Secondary中选举新的Primary节点。特殊情况下,可开放一个Secondary节点提供读写分离的服务。

MongoDB复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,MongoDB Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据,以保持复制集内所有成员存储相同的数据集,提供数据的高可用。

下图是一个托管平台提供的MongoDB复制集,包含1个Primary节点和2个Secondary节点。

二、业务特性

1、 高性能

【高并发读写】

MongoDB支持多线程,可充分利多核CPU的优势,有效的提高其读写性能。在千万级数据中,简单读操作的QPS的可达到15万/秒;简单写操作的QPS可达到5万/秒。在亿级数据中,简单读操作的QPS也能达到10万/秒。

【超强的压缩性】

托管平台提供的MongoDB服务,采用MongoDB-3.2版本(持续升级),采用Wired Tiger存储引擎,对于简单结构数据可达到65%左右的压缩,对于较复杂结构的数据压缩率也在50%左右,极大了减小了存储空间,降低了使用成本。

2、 高可用性

【容错性】

三副本架构拥有较高了容错能力,当Primary节点出现故障,系统自动从两个Secondary中选举新的Primary节点,业务完全无感知。与此同时利用另一个Secondary节点进行快恢复,可将替换节点恢复至最新状态。避免从冷备数据中恢复而导致的数据不一致问题。

【自动同步机制】

MongoDB副本集数据同步主要包含2个步骤:intial sync(全量同步)和replication(追同步源的oplog,即增量同步),保证了数据的主从副本间的一致性,为故障转移和读写分离提供了基础保障。

【隔离机制】

有效的控制业务对机器资源的使用,使得就算是多个实例混跑,也不会造成相互影响的恶性循坏,每个业务都能独占分配的资源。

3、 高可靠性

【完善的监控体系】

提供CPU利用率、内存使用率、主从状态、连接数、磁盘空间等实例信息实时监控和历史趋势统计信息,并且通过可视化图标的形式展示,便于开发和运维随时了解实例动态、定位故障以及根据业务发展趋势预先提供技术保障。

【自动备份和快恢复】

采用每天全量冷备、实时oplog备份、应急Secondary备份。有效防范因误操作等原因对业务数据造成不可逆的影响,提高容灾能力。

【专业的管理平台】

托管平台提供的MongoDB服务,采用专业的管理控制台。从业务的申请接入,到业务的日常维护(问题定位、实例重启、备份、数据恢复),以及业务的扩展,都提供专业的全面的、自助的、可控的管理平台。全面提升研发、运维效率。

业务申请地址: http://bianque.webdev.com/index.php?s=/home/index/mongoApply

4、 可扩展性

【支持弹性扩容】

MongoDB可以按需扩容,扩容过程方便快捷,不涉及物理机的迁移等重操作,出色平行扩容能力,也提高了资源的利用率。

【升级过程对用户透明】

定期对MongoDB的版本进行升级,使业务能第一时间享受到新特性带来的性能优化,同时升级过程对业务完全透明和无感,依赖较少,不影响业务的正常使用。

三、 应用场景

MongoDB存储服务具有其自身的特性和优势,在以下需求的业务场景中,使用该存储服务,能起到较好的效果:

  • 海量数据的存储
  • 高并发读写需求
  • 异构数据混合存储
  • 严格的读写分离需求

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏搜云库

什么是微服务架构

什么是微服务? 微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被...

19010
来自专栏Linyb极客之路

为什么微服务需要API网关?

663
来自专栏PingCAP的专栏

TiDB 在饿了么归档环境的应用

随着业务增长,公司数据规模不断膨胀,表变多、变大。一方面占用的磁盘、CPU 等物理资源疾速上涨,另一方面大表性能下降且变更困难。实际上,很多大表的数据无需保留很...

56311
来自专栏WindCoder

网易MySQL微专业学习笔记(十二)-MySQL容量评估

这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL业务优化与设计”中的MySQL数据类型相关笔记。

401
来自专栏EAWorld

普元容器云关键设计和实践之路

目前,DevOps,微服务与容器云,可以说是炙手可热的三大话题,甚至可以说它们是云时代企业新一代IT架构的三大基石也不为过。微服务主要解决的是开发期的设计问题,...

944
来自专栏小怪聊职场

架构|如何架构一个合适的企业API网关(1)API网关的介绍、应用场景、作用及常用方案

2498
来自专栏

Docker平台和Moby项目添加Kubernetes

Docker平台正在集成对Kubernetes的支持,以便Docker客户和开发人员可以选择使用Kubernetes和Swarm来编排容器工作负载。

2195
来自专栏SDNLAB

ONOS调研报告

1 SDN简介和组成部分 SDN即软件定义网络(Software Defined Network, SDN ),是emulex网络一种新型网络创新架构,是网络虚...

3285
来自专栏IT大咖说

向Kubernetes容器云平台迁移,你必须知道的9件事

内容来源:2017 年 11 月 25 日,当当网数字业务事业部技术总监李志伟在“Kubernetes Meetup | 北京站”进行《Kubernetes容器...

903

容器服务:来自外部的问好!

容器服务正在改变应用程序的部署方式和管理方式。但容器服务究竟是什么?它与其他传送平台方式有何不同?

1786

扫码关注云+社区