- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mongodb分布式集群架构
2021-07-10
一、关于mongodb
MongoDB是一个基于分布式文件存储的数据库。由C++言语编写。旨在为WEB应用供应可扩展的高功能数据存储处理方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当***能最丰富,最像关系数据库的。他支持的数据结构格外松散,是类似json的bjson格式,因而可以存储比较简单的数据类型。Mongo最大的特点是他支持的查询言语格外强大,其语法有点类似于面对对象的查询言语,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
二、mongodb分布式应用原理
MongoDB集群包括肯定数量的mongod(分片存储数据)、mongos(路由处理)、config server(配置节点)、clients(客户端)、arbiter(仲裁节点:为了选举某个分片存储数据节点那台为主节点)。
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相邻的数据通常会存在同一台服务
(数据块)上。?
三、mongodb分布式部署方式
服务器部署可以有多种方式。首先,每台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分布式的安装
1、下载
wget /linux/mongodb-linux-x86_64-2.0.4.tgz
2、安装
tar zxvf mongodb-linux-2.0.4.tgz?
cp -fr mongodb-linux-*2.0.4/* /data/mongodb/?
mkdir -p /data/mongodb/data/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #创建数据存储名目?
mkdir -p /data/mongodb/log/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#创建日志存储名目?
mkdir -p /data/mongodb/config/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #创建配置存储名目?
mkdi
文档评论(0)