文档章节

MogileFS与FastDFS的个人见解

HelloEric
 HelloEric
发布于 2015/05/03 18:35
字数 2096
阅读 459
收藏 1
MogileFS & FastDFS 为两个开源分布式文件系统,都主要适用于互联网文件共享,上传,下载等功能,主要用于多上传和下载,不经常修改的操作。M和F部署架构都比较类似,设计中都避免的cluster中某一个环节的单点问题。

 MogileFS

------------------------- 官网https://code.google.com/p/mogilefs/ 基本架构:TrackerServer(Tracker + DataBase) + StorageServer [ Mogilefs的组成部分 ] 1. 数据库(MySQL)部分 你可以用mogdbsetup程序来初始化数据库。数据库保存了Mogilefs的所有元数据,你可以单独拿数据库服务器来做,也可以跟其他程序跑在一起,数据库 部分非常重要,类似邮件系统的认证中心那么重要,如果这儿挂了,那么整个Mogilefs将处于不可用状态。因此最好是HA结构。 2. storageServer(存储节点) mogstored 程序的启动将使本机成为一个存储节点。启动时默认去读/etc/mogilefs/mogstored.conf ,具体配置可以参考配置部分。mogstored启动后,便可以通过mogadm增加这台机器到cluster中。一台机器可以只运行一个mogstored作为存储节点即可,也可以同时运行其他程序。 3. trackersServer(跟踪器) mogilefsd即 trackers程序,类似mogilefs的wiki上介绍的,trackers做了很多工作,Replication ,Deletion,Query,Reaper,Monitor等等。mogadm,mogtool的所有操作都要跟trackers打交 道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡。trackers也可以只运行在一台机器 上,也可以跟其他程序运行在一起,只要你配置好他的配置文件即可,默认在/etc/mogilefs/mogilefsd.conf。 4. 工具 主要就是mogadm,mogtool这两个工具了,用来在命令行下控制整个mogilefs系统以及查看状态等等。 如果使用其他语言调用接口,需要二次开发。 5. Client Client实际上是一个Perl的pm,可以写程序调用该pm来使用mogilefs系统,对整个系统进行读写操作。 [ 逻辑原理 ] 每次文件的上传和读取,都经过前端TrackerServer服务器,trackerServer服务器受到client端的请求,查询数据库,返回一个上传或者是读取的可用的后端StorageServer的地址,然后由client端直接操作后端StorageServer服务器。upload操作返回就是成功或者失败的结果,read操作就是返回对应的查询数据。 ====================================

FastDFS

------------------------- 官网: https://code.google.com/p/fastdfs/ 基本架构:TrackerServer + StorageServer [ FastDFS的组成部分 ]  1. Storage server 在其他文件系统中通常称作Trunk server或Data server。Storage server直接利用OS的文件系统存储文件。FastDFS不会对文件进行分块存储,客户端上传的文件和Storage server上的文件一一对应。 2. TrackerServer Tracker server作为中心结点,其主要作用是负载均衡和调度。Tracker server在内存中记录分组和Storage server的状态等信息,不记录文件索引信息,占用的内存量很少。另外,客户端(应用)和Storage server访问Tracker server时,Tracker server扫描内存中的分组和Storage server信息,然后给出应答。 [ 逻辑原理 ] StorageServer作为主动方,在服务起来之后,会定时(时间可以配置)向他对应的tracker发布自己的状态和相关信息。TrackerServer服务只是会记录相对于的group对应的服务器IP,以便在read的时候直接 返回服务器IP。TrackerServer里面存储着每一个group的server列表,server列表里面的storage服务器都是实时相互备份操作。 在单个tracker,多个storage的架构的环境中,首先是upload操作: client端将upload的请求直接发送给tracker服务器,tracker收到之后,会根据自己的一套定义的规则(可以配置),将回复可以上传的storage服务器IP,client将文件upload至storage服务器,完成操作。 read操作: client端发送需要get的URL地址,tracker根据URL中的group来划分属于哪些storage服务器,然后返回可以访问的服务器IP地址。 client直接访问指定storage服务器,此storage服务器已经部署Nginx类似的HTTP服务,并加载fastdfs的模块,需提前进行域名跳转的设定,完成文件的读取。 关于多tracker和多storage的系统架构设计 根据fastdfs的架构描述,tracker和storage都是可以横向无限延伸,现还未有一个比较标准的一个tracker和storage配对的模式,只是说个人建议在一个group中,storage尽量保证在2-3台存储服务器,配对的tracker保持2台即可。 对于一个cluster的模式,大概可以这样去设计系统架构: 2台Nginx最前端的服务器,用于client端的read请求,主要作用是用来做负载均衡服务,热备操作,最好在nginx的config配置里面加入location设置,根据groupname直接跳转到对应的storage服务器。 2台tracker服务器,用于write操作的分发,也可以做热备操作,后端的storage服务器配置中tracker设置需要将2台服务器都绑定上去。 N台storage服务器,一个group配备2-3台服务器,可以根据数据量的大小,从小的规模做起,如有新的扩容,直接新增新的group和storage服务器即可,这样只需修改前端那nginx服务配置,其他都不用调整。 ====================================

MogileFS VS FastDFS

[ 类似点 ] 1. 架构都比较雷同,都具备tracker和storage两个部分的cluster架构,可以都很方便进行横向扩张。 2. 对于storageServer方面一旦有某机器宕机,硬盘损坏情况,都能自动完成修复功能。 3. 架构设计都无单点失败问题,cluster中服务器都无需采用raid服务,避免出现类似hadoop设计的cluster中前端mapreduce宕机,整个系统失效的问题 4. 文件存储都不能对大文件拆分(hadoop可以实现),所以如果单个文件超过一台存储物理机的存储空间,就不能使用此系统存储 5. 文件系统的存储格式都不是原文存储,就算你登陆到文件服务器也无法获取到系统中的数据,必须经过一定的接口才能获取 [ 不同点 ] 1. F架构中不具备数据库,M中必须使用数据库来存储每一个文件的地址。但是F架构中在每次上传之后会返回一个相对地址,此地址需自己完成写入某个数据源中进行保存,在下一次读取的时候就能找到此文件对于文件系统中的位置。也就是说F中的数据是独立于文件系统之外,可以自己来设计的,M是包含到文件系统之中。 2. F是由C开发,M是有Perl开发,性能方面F占优 3. F直接使用socket通信方式,相对于M的HTTP方式,效率更高。并且F使用sendfile传输文件,采用了内存零拷贝,系统开销更小,文件传输效率更高。 4. F从V1.14开始支持相同文件内容只保存一份,这样可以节省存储空间,提高文件访问性能,M不具备这个功能 5. F中有Group的概念,每个Group的就是一个存储的cluster,一个cluster每个存储服务器都互相复制数据。M中没有Group,但引入class来对不同的文件区分存储的方式。例如附录01中的配置,不同文件可以在upload操作的选择使用哪一种class,就可以采用不一样的备份数量控制。 6. F是国人开发出来,有问题可以直接问作者(QQ群:212801927),M想找到相关资料比较麻烦 附录01
mogadm class list domain               class                mindevcount   replpolicy -------------------- -------------------- ------------- ------------ toast                byhost                    2        MultipleHosts() toast                default                   2        MultipleHosts() toast                four                      4        MultipleHosts() toast                fourbynamenet             1        HostsPerNetwork(near=2,far=1) mogadm class add toast twoontwonets --replpolicy "HostsPerNetwork(near=2,far=2)" mogadm class modify toast twoontwonets --replpolicy "HostsPerNetwork(near=3,far=3)"

© 著作权归作者所有

HelloEric

HelloEric

粉丝 8
博文 81
码字总数 76741
作品 0
成都
私信 提问
实现企业级分布式储存之mogilefs和fastdfs的应用

(1)关于mogilefs Web 2.0 时代的到来,使得单个计算机节点远远无法满足用户对海量数据和应用程序运行空间的需求。个人和企业都有安全而持久的存储信息的需求,备份成为最通俗的手段。个人用...

LUksl
2018/06/26
0
0
分布式文件系统小搜罗

hadoop DFS java 写的 KosmosFS c++ 写的 MogileFS 用的比较多,Perl写的,用mysql做元数据的保存。由于Mogilefs不支持对一个文件的随机读写,因此注定了只适合做一部分应用。比如图片服务,...

ZhaoChengye
2010/04/20
1K
0
Ceph,TFS,FastDFS,MogileFS,MooseFS,GlusterFS 对比

系统整体对比 对比说明 /文件系统 TFS FastDFS MogileFS MooseFS GlusterFS Ceph 开发语言 C++ C Perl C C C++ 开源协议 GPL V2 GPL V3 GPL GPL V3 GPL V3 LGPL 数据存储方式 块 文件/Trunk ...

yswenli
2017/08/15
0
0
谁能指导下分布式文件系统的选型,存储小文件用的,图片、word、pdf之类的文档

谁能指导下分布式文件系统的选型,存储小文件用的,图片、word、pdf之类的文档。总体规模在 千万级个文件。 公司后端用的 java 架构的基于 centos系统, 目前针对文件存储的方式是,单独列出...

从前
2013/01/25
6.1K
8
Nginx反代Mogilefs分布式储存示例

一、分布式存储系统简介   随着信息技术不断的发展,给我们带来便利的同时,不断增加的数据量级、信息之间的连接关联越来越复杂、数据访问的并发量日益增加对I/O的要求越来越高、数据类型越...

Ala6
2018/11/04
376
0

没有更多内容

加载失败,请刷新页面

加载更多

面试官,Java8 JVM内存结构变了,永久代到元空间

在文章《JVM之内存结构详解》中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试...

程序新视界
17分钟前
11
0
读书笔记:深入理解ES6 (八)

第八章 迭代器(Iterator)与生成器(Generator) 第1节 循环语句的问题   在循环、多重循环中,通过变量来跟踪数组索引的行为容易导致程序出错。迭代器的出现旨在消除这种复杂性,并减少循...

张森ZS
17分钟前
11
0
Elasticsearch 实战(一) - 简介

官腔 Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 基本等于没说,咱们慢慢看 1 概述 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜...

JavaEdge
22分钟前
10
0
【jQuery基础学习】11 jQuery性能简单优化

本文转载于:专业的前端网站➦【jQuery基础学习】11 jQuery性能简单优化 关于性能优化 合适的选择器 $("#id")会直接调用底层方法,所以这是最快的。如果这样不能直接找到,也可以用find方法继...

前端老手
30分钟前
11
0
重磅发布 | 全球首个云原生应用标准定义与架构模型 OAM 正式开源

导读:2019 年 10 月 17 日,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon 上海重磅宣布,阿里云与微软联合推出开放应用模型 Open Application Model (OAM...

阿里云官方博客
33分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部