首页 > 编程知识 正文

概要设计的主要成果,简述分布式文件系统设计的需求

时间:2023-05-05 06:21:58 阅读:129023 作者:4223

《分布式文件系统概要设计.docx》由会员共享,在线免费阅读全文。 此文档格式为docx,更多相关《分布式文件系统概要设计.docx》文档请每天在文库中搜索。

1、分布式文件系统概要设计(初稿)。 三人行研发集团2011-9-10修订历史日期版本描述作者2011-9-100.1概要设计初稿张2011-10-100.2概要设计完善熊书宜一、需求分析与目标设定业务需求:1.提供全站UGC文件存储与读取2. 3 .运输和扩建方便。 4 .服务稳定的同时数据安全。 2 .系统架构设计主流选型1、MogileFS Key-Value型元文件系统、不支持FUSE、APP应用访问时需要API,主要用于web领域处理大量小图片,效率较高2、快速数据库国民基于mogileFS改进的密钥值文件系统,同样不支持闪存,提供比mogileFS更好的性能。 3、MooseFS (我现在使用的) )支持FUSE,重量比较轻,相对于m。

2、aster服务器有单点依赖,是用perl写的,性能相对较差,其master是否占用非常大的内存? (测试结果类似chunkserver )国内使用人群比较两者的区别主要在于: 1、HBase依赖HDFS。 MongoDB直接保存在本地磁盘上2,HBase将每个列族的数据保存在不同的文件中; MongoDB不是列,而是整个文档存储在一个. ns文件中,命名空间存储在公共. ns文件中。 (基于列和基于文档的区别应该是这个位置吧) 3、HBase的一个区域只有一个区域;MongoDB的shards (像区域)负载平衡) MongoDB根据负荷决定shards的分割体系结构。

3、mongodb自动硬查可以: 如果每个Sharding之间的负载和数据分布不均衡,自动恢复//这需要我来测试。 添加和删除简单节点。 自动故障切换。 可扩展到几千个节点的MongoDB集群包括一定数量的mongod、mongos、config server和clients。 以下逐一介绍。 1 shards个shard为一组mongod,一般一组2台,主从或互为主从。 这一组mongod中的数据相同,具体可见《mongodb分布式之数据复制》。 由于数据分割是有规律的分割,每个分片上的数据都是一个范围内的数据块,因此可以像Google bigtable一样支持指定分片的范围查询。 数据块具有指定的最大容量,当一个数据块的容量增加到最大容量时,该数据块被分成两部分。 瓷砖数据过多时,为数据。

4、块迁移到系统的其他片。 另外,添加新的分片后,数据块也将迁移。 2 mongos :可以是多个,相当于一个控制中心,负责路由和协调,使集群像一个系统。 mongos可以在任何服务器上运行,一些选项可以位于shards服务器上,也可以位于客户端服务器上。 mongos启动时,必须从config servers获取基本信息,接受客户端请求,将其路由到shards服务器,组织返回的结果并将其发送回客户端。 3 config server :保存集群的信息,如瓷砖和块数据信息。 主存储块数据信息,每个配置服务器都有所有块数据信息的副本,以确保每个配置服务器上的数据完整性。 4 shard key :要拆分数据集,必须创建切片key的格式。 与索引中使用的key格式一样,通常由一个或多个字段组成。

5、发布数据与mysql对比与mysqld一样,一个mongod服务可以建立多个数据库,每个数据库可以有多个表,这个表叫collection,每个collection 与形式为bson (binary JSON )的关系数据库不同,每个文档都是以单个文档为单位存储的,因此可以在一个或多个文档中添加或删除字段,而不影响其他文档。 这被称为方案自由,它是基于文档的数据库的最重要的优点。 与常见的key-value数据库不同,value包含结构信息,使您可以像在关系数据库中那样对某些域执行读写和统计等操作。 可以说兼具了key-value数据库方便高效的关系数据库的强大功能。 Nginx从数据库中按照collection (相当于表的概念)构成location /pics/{ gri。

6、dfspicsfield=filename type=string; mongo www.Wen ku365.com :27017; }选择}gridfs:nginx识别插件的关键字pics:db名称[root_collection]:

llection,如root_collection=blog, mongod就会去找blog.files与blog.chunks两个块,默认是fs[field]:查询字段,保证mongdb里有这个字段名,支持_id, filename, 可省略, 默认是_id[type]:解释field的数据类型,支持objectid, int, string, 可省略, 默认是int[user]:用户名, 可省略[pass]:密码, 可省略mongo:mongodb url配置replica sets的问题  问题  这时。

7、候如果Secondary宕机,那么Primary会怎么样呢?Primary会立刻变成Secondary!这时候集群里没有Primary了!为什么会出现这样的情况呢。  原因   这是和MongoDB的Primary选举策略有关的,试想如果情况不是Secondary宕机,而是网络断开,那么两个节点都会选取自己为 Primary,因为他们能连接上的只有自己这一个节点。而这样的情况在网络恢复后就需要处理复杂的一致性问题。而且断开的时间越长,时间越复杂。所以 MongoDB选择的策略是如果集群中只有自己一个节点,那么不选取自己为Primary。  解决方法   所以正确的做法应该是添加两个以上的节点,或者添加arbiter,当然最好也最方便的做法是添加arbiter,aribiter节点只参与选举,几 乎不会有压力,所以你可以在各种闲置机器上启动arbiter节点,这不仅会避免上面说到的无法选举P。

8、rimary的情况,更会让选取更快速的进行。(因 为如果是三台数据节点,一个节点宕机,另外两个节点很可能会各自选举自己为Primary,从而导致很长时间才能得出选举结果)测试环境192.168.1.43 3个mongod实例 1个primary 2个secondry 作为sets1192.168.1.44 3个mongod实例 1个primary 2个secondry 作为sets2192.168.1.190 config server192.168.1.79 route server43上的启动脚本root 12837 1 0 Sep19 ? 00:00:09 ./mongod --shardsvr --fork --logpath /opt/mongodb/logs/mongodb.log --dbpath /opt/mongodb/db/10001 --port 10001 --re。

9、plSet set1root 12862 1 0 Sep19 ? 00:00:06 ./mongod --shardsvr --fork --logpath /opt/mongodb/logs/mongodb.log --dbpath /opt/mongodb/db/10002 --port 10002 --replSet set1root 12875 1 0 Sep19 ? 00:00:03 ./mongod --shardsvr --fork --logpath /opt/mongodb/logs/mongodb.log --dbpath /opt/mongodb/db/10003 --port 10003 --replSet set144上的启动脚本root 3861 1 0 Sep19 ? 00:00:05 ./mongod --shardsvr --fork --logpath 。

10、/opt/mongodb/logs/mongodb.log --dbpath /opt/mongodb/db/10001/ --port 10001 --replSet set2root 3874 1 0 Sep19 ? 00:00:13 ./mongod --shardsvr --fork --logpath /opt/mongodb/logs/mongodb.log --dbpath /opt/mongodb/db/10002/ --port 10002 --replSet set2root 3887 1 0 Sep19 ? 00:00:01 ./mongod --shardsvr --fork --logpath /opt/mongodb/logs/mongodb.log --dbpath /opt/mongodb/db/10003/ --port 10003 --replSet s。

11、et2190的启动脚本root 5040 1 0 Sep19 ? 00:00:22 ./mongod --configsvr --fork --logpath /opt/mongodb/logs/mongodb.log --dbpath /opt/mongodb/db/config1/ --port 20000root 5053 1 0 Sep19 ? 00:00:14 ./mongod --configsvr --fork --logpath /opt/mongodb/logs/mongodb.log --dbpath /opt/mongodb/db/config2/ --port 20001root 5290 1 0 Sep19 ? 00:00:13 ./mongod --configsvr --fork --logpath /opt/mongodb/logs/mongodb.log 。

12、--dbpath /opt/mongodb/db/config3/ --port 2000279的启动脚本00:00:10 ./mongos --fork --logpath /opt/mongodb/logs/mongodb.log --configdb 192.168.1.190:20000,192.168.1.190:20001,192.168.1.190:20002简单的分析一下这个shard key,当不是写密集操作时,而仅仅是因为存储空间不够了,这个shard key我们可以选用一些无上限范围的key,如创建时间等,这样新创建的记录都会写入新的分片服务器上。当需要使每个分片均匀分布数据时,或者写入密集时,最好选用有一定范围值的key ,当然这个范围不能太小,像性别,真假等,这会导致只自动产生两个分片,所以一定要选择合适的shard key才能达到理想的效果。关于MongoDB数据库的自动分片技术就介绍到这里,希望通过本次的介绍能够带给您一些收获。一期使用强磁盘型应用:192.168.1.135 作为config+route和sets的一部分192.168.1.133 作为sets 的另一部分备份Mongodb master-slave 本系统的最终设计方案 (小熊这个地方补充上)1. 切图服务 和 monogdb 的对接Client调用ImageMagic++接口,处理完后的数据直接通过Monodb的C++版api存入mongodb中。目前提供 3r-Image.jar2. Java 文件存储和mongodb的对接Client调用mongodb的java api存入,读取文件于mongodb中。目前提供 3r-chameleon-nosql-mongodb.jar扩展与容量规划三. 难点与要点汇总四.后期扩展与运维。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。