需求按优先级顺序如下:

1)存放3TB以上中小型文件,图片为主,平均在500~700k,一般在1M以内。

2)要集群化,支持负载均衡,高可用高性能。有大企业使用背书最好。

3)提供Java程序上传文件的手段。Java代码可以在Windows环境下调试。

4)必须开源,作者能保持更新。

5)有运维监控手段,能快速定位出问题的服务器。

6)(加分项)新增存储服务器时,不需要更改Nginx负载均衡和Java程序的配置。

看了一大堆资料,没完美的解决方案,稍为符合的候选者只有3个:

框架 简介 文件存放方式 支持高可用 容量扩展手段 浏览器 gzip 支持 浏览器端缓存 程序访问
FastDFS

我知道国内很多创业公司都在用,自己也用了一段时间,比较稳定,网友写了不少中文资料,但官方几乎没有文档。建议用fastdfs-nginx-module吐流,而不是反向代理直接访问某个storage服务器。

运维方面:出现不能访问时,要查分布在多个地方的日志(nginx > nginx fastdfs module >storage > tracker),不熟悉的人不太好查原因。

主页:https://github.com/happyfish100/fastdfs

部署方式说明:http://blog.csdn.net/xifeijian/article/details/38567839

Docker:https://hub.docker.com/r/hhland/fastdfs/ ,https://hub.docker.com/r/season/fastdfs/

一个不错的参考方案:https://github.com/daniellitoc/xultimate-resource

key-value 方式存放。

没有上传目录的概念,研发/测试环境需要独立部署自用的文件服务器。

不支持文件列表,不支持FUSE

集群可由多台Tracker与多台Storage服务器组成。

多台tracker之间没有集群,由客户端解决failover问题。

storage服务器以group为单位组织,同一group下的不同storage服务器文件完全相同,主要用于负载均衡和容错,类似硬盘RAID10的方案。

不支持多机房。

TB级存储方案

1.同一storage服务器可以在配置中指定多个store_path来增加硬盘。

2.支持以group为单位增加服务器来扩展容量。

3.总容量为所有group加起来

由反向代理临时压缩 支持If-Modified-Since

语言SDK:通过专用SDK,支持Java。

REST接口:无

http读文件:可通过storage服务器的http服务,也可以通过装了fastdfs-nginx-module的nginx提供。建议使用后者

百度BFS
(待研究)

功能强大,但网上文档非常少,百度搜索未发现使用经验文章。介绍说百度整个公司都在用。

主页:https://github.com/baidu/bfs

Docker:提供Dockerfile,但没放到Docker Hub。

目录方式存放。

支持文件列表,支持FUSE

集群由NameServer,MetaServer,ChunkServer组成。

NameServer使用raft算法,依赖Neuxs或Zookeeper选出Leader,失效时自动重选Leader

ChuckServer的高可用:待分析

对多机房,多服务器支持最好。

PB级存储方案

 待分析  待分析

语言SDK:通过专用SDK访问,不支持Java,但可以通过FUSE桥接实现,Windows下估计需要用Cygwin才能访问。

REST接口:无

http读文件:NameServer提供访问。

seaweedfs

功能强大,似乎非常有潜力,中文资料少。Doc中说"中通快递"在用。

由于没用过,运维不好说是否方便。

主页:https://github.com/chrislusf/seaweedfs

部署与使用说明:http://blog.chinaunix.net/uid-25057421-id-5676348.html

官方Docker:https://hub.docker.com/r/chrislusf/seaweedfs/

key-value 方式存放。

可以上传到指定目录。所以研发/测试环境可以共用同一台文件服务器。

filer支持文件列表,但不支持FUSE

集群由多台master与多台volume服务器组成。volume之间的复制行为由复制策略所决定。

支持多机房,多种复制策略。

PB级存储方案

增加volume服务器能增加容量,但有效增加多少与复制策略有关。

支持预压缩成gzip格式文件,直接吐流成gzip 支持etag,If-Modified-Since等

语言SDK:实际所有SDK上都是通过REST接口访问。有Java版本。

REST接口:volumefiler服务器提供不同层级的接口,volume是key-value方式的,filer是类似目录的方式。

http读文件:filer服务器提供

综合来说,想简单易上手,seaweedfs的生态圈比较齐全,而且作者一直在更新。FastDFS也是不错的选择。

DFS 分布式文件系统 选型笔记的更多相关文章

  1. Hadoop学习笔记【分布式文件系统学习笔记】

    分布式文件系统介绍 分布式文件系统:Hadoop Distributed File System,简称HDFS. 一.HDFS简介 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(c ...

  2. 在Hadoop分布式文件系统的索引和搜索

    FROM:http://www.drdobbs.com/parallel/indexing-and-searching-on-a-hadoop-distr/226300241?pgno=3 在今天的信 ...

  3. 笔记之分布式文件系统(DFS)

    不知何故,老外都挺喜欢使用DFS,但是国内公司用这个的不多.一个具体的需求就是,备份服务器在国外,所以启用DFS把国内的数据同步一份到国外进行备份.最近有机会接触DFS,把一些心得体会记录一下. 1. ...

  4. 大数据学习笔记2 - 分布式文件系统HDFS(待续)

    分布式文件系统结构 分布式文件系统是一种通过网络实现文件在多台主机上进行分布式存储的文件系统,采用C/S模式实现文件系统数据访问,目前广泛应用的分布式文件系统主要包括GFS和HDFS,后者是前者的开源 ...

  5. Dubbo入门到精通学习笔记(八):ActiveMQ的安装与使用(单节点)、Redis的安装与使用(单节点)、FastDFS分布式文件系统的安装与使用(单节点)

    文章目录 ActiveMQ的安装与使用(单节点) 安装(单节点) 使用 目录结构 edu-common-parent edu-demo-mqproducer edu-demo-mqconsumer 测 ...

  6. 分布式文件系统之MooseFS----介绍

    前一段公司因为nfs存储的问题,做了一段时间的调研.最终虽然有nfs高可用方案(nfs+drbd+heartbeat),但是在nfs故障切换的时候会出现 2 分钟左右的延时.这样子...就开始了对分布 ...

  7. 分布式文件系统 - FastDFS 简单了解一下

    别问我在哪里 也许我早已不是我自己,别问我在哪里,我一直在这里. 突然不知道说些什么了... 初识 FastDFS 记得那是我刚毕业后进入的第一家公司,一个技术小白进入到当时的项目组后,在开发中上传用 ...

  8. HDFS分布式文件系统资源管理器开发总结

      HDFS,全称Hadoop分布式文件系统,作为Hadoop生态技术圈底层的关键技术之一,被设计成适合运行在通用硬件上的分布式文件系统.它和现有的分布式文件系统有很多共同点,但同时,它和其他的分布式 ...

  9. Hadoop 分布式文件系统:架构和设计

    引言 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点.但同时,它和其他的分布式文件系统 ...

随机推荐

  1. 《SpringMVC数据绑定入门》笔记

    基本类型 最好使用封装类型 简单多数据&多层级对象 简单多数据 单个对象,直接使用属性名=值即可 多层级对象 属性.属性=值即可 同属性多对象 WebDataBinder只在当前类中生效,不是 ...

  2. Delphi调用Android的.so文件(转)

    原地址:http://zhidao.baidu.com/link?url=fzqefMM44ljXA5BnAbkX44SapCUteyzlXFvGLKvukBivm9AB-w39P_h7eX1ty-G ...

  3. 使用Tomcat搭建图片服务器,使图片能够用链接访问

    在后台和前端交互时,遇到了后台存储的图片,前端根据地址无法访问,使用Tomcat搭建图片服务器 1.找到tomcat下的server.xml文件 2.配置文件下加入service节点 <!--为 ...

  4. Java web入门

    1.java 设计模式:http://blog.csdn.net/JAVE_LOVER/article/category/2379703 2.Java web框架的思考:http://www.osch ...

  5. Struts2---Result(传统Web应用程序与Ajax应用程序的异同)

    看了很久的struts,在视频和书的引导下,慢慢明白了点,推荐:<struts 2 in action>和马士兵的视频 今天看结果这块时,由于还没有学过ajax等,不太明白,但是必须弄懂嗒 ...

  6. APK的反编译

    有秘密的地方就有见不得光的东西,我讨厌这些,所以对于某一个XX圈APP极其反感,感觉就像一个色情网站 一.ApkTool的使用 看了几个教程,自己下载的好像总是不完整,下载包解压后一个没有aapt.e ...

  7. c++初学(电梯实验加强版)

    Elevator.h class Elevator{public:    Elevator();    ~Elevator();    void getNowNum();        void Se ...

  8. flash跨域访问

    -------------------------------------------------------背景------------------------------------------- ...

  9. css中的单位

    一.相对长度单位: 相对长度是根据与其他事物的关系来度量的.共有3种相对长度单位:em,ex,px. 1个“em”定义为一种给定字体的font-size的值,例如,一个元素的font-size为14像 ...

  10. JavaScript定时机制、以及浏览器渲染机制 浅谈

    昨晚,朋友拿了一道题问我: a.onclick = function(){ setTimeout(function() { //do something ... },0); }; JavaScript ...