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 条评论
登录 后参与评论

相关文章

来自专栏Java架构沉思录

微服务等于Spring Cloud?一文告诉你微服务到底是什么。

首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务。

692
来自专栏大魏分享(微信公众号:david-share)

互联网架构中的9种隔离术以及容器化的实现

9种隔离术 在硬件方案设计的时候,我们常提到过一个概念“故障域”。故障域指的是当一个区域出现故障以后,它的受影响范围。例如在设计双活数据中心的时候,我们要设置故...

4814
来自专栏企鹅号快讯

左手用R右手Python系列——多进程/线程数据抓取与网页请求

这一篇涉及到如何在网页请求环节使用多进程任务处理功能,因为网页请求涉及到两个重要问题:一是多进程的并发操作会面临更大的反爬风险,所以面临更严峻的反爬风险,二是抓...

2146
来自专栏Java技术

微服务设计我们需要考虑哪些要点?

作者:刘超,毕业于上海交通大学,15年云计算领域研发及架构经验,先后在EMC,CCTV证券资讯频道,HP,华为,网易从事云计算和大数据架构工作。

982
来自专栏码神联盟

短信 | 教你使用 JAVA实现 【短信发送】 功能

2014
来自专栏java一日一条

『文末送书』Spring Cloud 微服务的那点事

在详细的了解SpringCloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生。

712
来自专栏Python

一、爬虫基本原理

一 爬虫是什么 ? #1、什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样。 #2、互联网建...

21810
来自专栏搜云库

保证分布式系统数据一致性的6种方案

在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性? 具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要...

1K7
来自专栏java思维导图

微服务设计我们需要考虑哪些要点?

作者:刘超,毕业于上海交通大学,15年云计算领域研发及架构经验,先后在EMC,CCTV证券资讯频道,HP,华为,网易从事云计算和大数据架构工作。

930
来自专栏Java架构

从架构演进的角度聊聊Spring Cloud都做了些什么?传统架构发展史 SOA和微服务架构总结

单体架构在小微企业比较常见,典型代表就是一个应用、一个数据库、一个web容器就可以跑起来,比如我们开发的开源软件云收藏,就是标准的单体架构。

792

扫码关注云+社区