今天继续给大家介绍Linux运维相关知识,本文主要内容是MongoDB架构与原理。

一、MongoDB架构简介

MongoDB采取主从架构,官方建议3个节点组成副本集,MongoDB的架构图如下所示:

注意,在上图中,Primary主库会讲其数据信息同步到Secondary从库上,但是与MySQL主从同步架构不同的是,在MongoDB的架构中,对数据库的读和写都会发送给到Primary主库上去。

二、MongoDB副本集

MongoDB的副本集是一组配置成可自动同步数据和进行故障切换的节点。早期版本的MongoDB复制只提供数据同步,但是不支持故障切换,因此现在已经被副本集所替代。MongoDB的journaling日志功能也提供了数据保护能力,与副本集相比,journaling可以大幅度提升故障和数据恢复的速度,常与副本集一起使用。
一个MongoDB的副本集至少有三个节点组成,其中提供读写功能的Primary节点有且仅有一个,提供数据备份的副节点(Secondary)可以有一个或者多个。副节点采用长轮询(Long Polling)机制,可以准实时的从主节点local集合中获取包含数据变化的oplog,并应用于副节点库。
总的来看,MongoDB的副本集优点有以下三点:
1、提供数据保护、负载均衡和容灾能力。
2、可以进行节点心跳的检查,以检测和维护副本集。
3、通过选举机制完成故障切换。

三、MondoDB存储引擎

MongoDB中有一个核心组件——存储引擎,其负责管理和组织数据采取什么样的格式存储在硬盘和内存上。MongoDB支持的存储引擎有wiredTiger、MMAPv1、In-memory,在MongoDB3.2版本以前,默认的存储引擎是wiredTiger,在3.2版本之后和4.0版本之前,默认的存储引擎是MMAPv1,在4.0版本之后,默认的存储引擎是In-memory。
MMAPv1引擎是一种多数据引擎,即在一个MongoDB复制集中,可以有多种存储并存,这可以满足应用更为复杂的需求。In-memeor引擎即可以将数据只存储的内存中,还可以将数据持久化到硬盘中。当只将数据存储到内存中时,只会讲少量的元数据和诊断文件存储到硬盘中,这样减少了磁盘I/O的消耗,大大降低了数据查询的延时。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200