MongoDB 支持分布式部署,自然也支持自动分片。
一、MongoDB集群包括一定数量的mongod(分片存储数据)、mongos(路由处理)、config server、clients。以下会一一介绍。
1、shards:一个shard为一组mongod,通常一组为两台,主从或互为主从,这一组mongod中的数据时相同的,具体可见《mongodb分布式之数据复制》。数据分割按有序分割方式,每个分片上的数据为某一范围的数据块,故可支持指定分片的范围查询,这同google的BigTable 类似。数据块有指定的最大容量,一旦某个数据块的容量增长到最大容量时,这个数据块会切分成为两块;当分片的数据过多时,数据块将被迁移到系统的其他分片中。另外,新的分片加入时,数据块也会迁移。
2、mongos:可以有多个,相当于一个控制中心,负责路由和协调操作,使得集群像一个整体的系统。mongos可以运行在任何一台服务器上,有些选择放在shards服务器上,也有放在client 服务器上的。mongos启动时需要从config servers上获取基本信息,然后接受client端的请求,路由到shards服务器上,然后整理返回的结果发回给client服务器。
3、config server:存储集群的信息,包括分片和块数据信息。主要存储块数据信息,每个config server上都有一份所有块数据信息的拷贝,以保证每台config server上的数据的一致性。
4、shard key:为了分割数据集,需要制定分片key的格式,类似于用于索引的key格式,通常由一个或多个字段组成以分发数据,比如:
{ name : 1 }
{ _id : 1 }
{ lastname : 1, firstname : 1 }
{ tag : 1, timestamp : -1 }
mongoDB的分片为有序存储(1为升序,-1为降序),shard key相邻的数据通常会存在同一台服务器(数据块)上。config server的db中存储的信息如下:
二、服务器部署可以有多种方式。首先,每台config server、mongos、mongod都可以是单独的服务器,但这样会导致某些服务器的浪费,比如config server。下图为物理机共享的集群部署,不需要额外加机器。
当然也有其他的方案,比如把mongos部署在所有的mongod(server1-6)上,又或者在每个运用服务器(server7)上部署mongos。这样部署有个好处在于,appserver和mongos之间的通信建立在localhost interface上,减少了通信成本。当然,此乃官方说法,但本人有想法,尽管减少了appserver和mongos之间的通信成本,但mongos与mongod之间的通信成本却增加了,而且把mongos部署在appserver上并不是很利于sa管理,mongoDB应该是一个相对独立的系统,与应用的耦合度应该尽量降到最低,万一应用想要换数据库,也能多少减少些工作量。当然,视个人习惯了。
分享到:
相关推荐
### MongoDB大型分布式部署详解 #### 一、MongoDB大型分布式部署概述 MongoDB是一种非常流行的NoSQL数据库系统,尤其适用于需要处理大量非结构...希望本文能够帮助读者更好地理解和掌握MongoDB分布式部署的相关知识。
MongoDB分布式数据库安装部署和应用文档
NULL 博文链接:https://zhaoshijie.iteye.com/blog/1314158
#### MongoDB分布式部署 MongoDB服务器的部署方式包括: - **Configserver**:配置服务器,负责存储集群的配置信息。 - **Mongos**:路由服务进程,处理客户端请求。 - **Mongod**:数据存储节点,负责存储实际数据...
MongoDB 的分布式部署涉及多种服务组件,这些组件协同工作以提供高度可扩展且具有容错能力的数据存储解决方案。 **1.1 配置服务(Config Server)** 配置服务负责存储集群的元数据信息,主要包括数据在各个分片...
### MongoDB分布式集群搭建详解 #### 一、集群与分布式概念 **集群(Cluster)**与**分布式(Distributed)**是两种常见的架构设计模式,用于提高系统的可用性、可伸缩性和性能。 1. **集群(Cluster)** - **定义**:...
该毕业设计项目主要关注的是构建一个基于MongoDB分布式数据库集群的斗鱼弹幕采集系统,其后端开发采用Node.js技术栈。以下是该项目所涉及的关键知识点的详细解释: 1. **MongoDB分布式数据库集群**:MongoDB是一款...
在MongoDB分布式集群中,副本集的概念是核心组成部分。副本集是由多个mongod实例组成的,每个实例称为一个节点。副本集的主要目的是提供数据的冗余和高可用性,确保数据的持久性和一致性的同时,提供读取操作的负载...
MongoDB 分布式集群是MongoDB数据库系统中的一个重要特性,它允许数据库跨越多个服务器,以提供水平扩展、高可用性和故障恢复能力。MongoDB的分布式设计使得它能够处理大规模的数据存储和复杂的查询操作,适合于...
本项目是一个基于Python实现的高性能分布式爬虫系统,利用了Flask框架构建后端服务,数据库选择的是MongoDB,而分布式协调则借助于Redis。这个系统适用于毕业设计,且已经在Windows 10/11环境下经过了测试,证明其...
### MongoDB分布式存储策略 MongoDB的分布式存储策略通过自动分片技术来分布数据,支持高性能和高可用性。分布式部署架构中,Configserver负责配置管理,mongos作为路由进程, mongod是数据库服务进程。 ### ...
MongoDB是一个基于分布式文件存储的开源数据库系统,具有高性能、高可用性和易扩展性等特点。下面是MongoDB安装部署的手册。 下载安装包 首先,需要从MongoDB官方网站下载安装包,下载地址为...
MongoDB支持多种部署模式,包括单机部署、主从复制、副本集和分片等。其中,**集群**主要是指通过**分片(Sharding)**和**副本集(Replica Set)**两种技术实现的数据分布和高可用解决方案。 1. **分片(Sharding...
通过将数据分布到多个shard上,可以显著提高数据处理能力和存储容量,实现大数据集和高吞吐量操作的分布式处理。sharding的主要优势在于通过多台机器分摊计算量,同时保持系统的扩展性、高可用性和容错性。 ...
简单打包分布式部署MongoDB集群,开启身份认证发布工具包示例。 使用参考博客地址 https://blog.csdn.net/csdn710924032/article/details/80713877 内附度盘
MongoDB是一种流行的开源、分布式文档型数据库,以其灵活性、高性能和易用性而备受青睐。在大规模部署场景下,为了确保高可用性和可扩展...理解并掌握这些概念和技术,有助于构建高效、稳定、安全的MongoDB分布式系统。