• DFS 分布式文件系统 选型笔记


    需求按优先级顺序如下:

    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可以上传到指定目录。但由于java的sdk都是直连master与volume,所以研发/测试环境不能共用同一台文件服务器。

    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也是不错的选择。

  • 相关阅读:
    图片一句话木马简单制作方法
    kali各工具使用介绍
    隐写工具zsteg安装及使用教程
    内网渗透中mimikatz的使用
    kali meterpreter中mimikatz模块获取密码
    一个恐怖份子上传了这张照片到社交网络。里面藏了什么信息?
    攻防世界MISC进阶之签到题
    EMC存储重装系统分区丢失恢复方法
    服务器数据迁移方法
    教您分辨U盘不能识别是哪儿坏了
  • 原文地址:https://www.cnblogs.com/depyuka/p/6411048.html
Copyright © 2020-2023  润新知