FastDFS:01---分布式存储概述、fastdfs入门介绍

一、文件系统概述

  • 文件系统一般分为以下几种:
    • ①操作系统文件系统:是对磁盘文件的组织形式。例如nfs、ext3、ext4等
    • ②用户态文件系统:实现在用户空间的文件系统框架。例如fuse等
    • ③分布式文件系统:fastdfs、gfs、tfs等

FastDFS:01---分布式存储概述、fastdfs入门介绍

二、分布式存储技术对比

  • 普通存储方案:Rsync、DAS(IDE/SATA/SAS/SCSI 等块)、NAS(NFS、CIFS、SAMBA 等文件系统)、 SAN(FibreChannel,iSCSI, FoE 存储网络块),其他Openfiler、FreeNas(基于ZFS快照复制)
  • 由于生产环境中往往由于对存储数据量很大,而SAN存储价格又比较昂贵,因此大多会选择分布式存储来解决以下问题:
    • 1. 海量数据存储问题
    • 2. 数据高可用问题(冗余备份)问题
    • 3. 较高的读写性能和负载均衡问题
    • 4. 支持多平台多语言问题
    • 5. 高并发问题
  • 几种常见分布式存储对比:
  FastDFS TFS MFS HDFS Ceph MogileFS ClusterFS
适合类型 建议 4KB~500MB 大小文件 小于 64KB 性能不高 大文件 对象、文 件、块 海量小图片,效率比 MFS 高 适合大文件存储
文件分布 小文件合并存储,不分片处 理 小文件合并,以 Block 组织 分片 文件分片 大 文 件 分 块 分片存储 OSD 一 主 多从   AFR(raid1) Stripe(raid0) DHT(弹性哈希)
系统性能

1.很高(未使用数据库),文 件访问点对点,不经 tracker 中转

2.无法动态调整磁盘空间负 载

3.客户端需记录存储信息

1. 主从 NameServer(由 HA agent 实现高可用) 2.DataServer、支持异地灾 备 3. 客户端需记录存储信息 Master 相对占内存 AvatarNod e/BackupN ode 两种 HA 方案 通 过 CRUSH 算 法 分 布式 元数据, 不 太 成熟 基 于 Btrfs 高(MySQL 存储文件索引信 息,文件同步由 tracker 调 度中转) 无元数据服务器
复杂度 简 单 (tracker 和 storage 两个角色) 部署较复杂 包 含 master 、 metalogger 、 chunkserver 三 个 角色 NameNode 和 DataNode 角 色 复杂 一般(tracker、storage 和 存储文件信息的 MySQL) 简单
是否支持 FUSE 不支持 不支持 支持 支持 支持 需要 mount-mogilefs 支 持 支持
是否支持 POSIX 不支持 不支持 支持 支持 支持 不支持 支持
备份机制 分组组内冗余 Block 存储多份,主辅集群 灾备 多点备份,动态冗 余 多副本 多副本 动态冗余 镜像
通讯协议接口 原生 API、HTTP 原生 API、HTTP 使用 fuse 挂载 原生 API、使 用 httpfs 提 供 HTTP接口、 Thrift 原生 API 原生 API、HTTP IP/RDMA
活跃度 国内使用较多 较少 较多 较多 较少 文档较少 使用较多
文件附加属性 支持   支持 支持   不支持 支持
去重性 依赖 FastDHT 去重接口结合 Tair   结 合MapReduce   不支持 依赖 dedup xlator
语言 C 语言 C++ Perl 语言 Java 语言 C++ Perl 语言 C 语言
缺点

1. 服 务器配 置不统 一 无 法动态 调整磁 盘 空间负载压力

2. 客 户端需 记录存 储 信息

      1. 目 前还 不 太 成 熟 , 基于 Btrfs    

三、FastDFS介绍

  • FastDFS 是一款开源的、分布式文件系统(Distributed File System),由淘宝开发平台部资深架构师余庆开发
  • 它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)等,解决了大容量存储和负载均衡的问题
  • FastDFS 是通过纯 C 实现,支持 Linux, FreeBSD 等 Unix 系统类 Google FS,不是通用的文件系统,只能够通过专有 API 访问,目前提供了C,Java 和 PHP API 为互联网应用量身定做
  • 追求高性能和高扩展性 FastDFS 可以看做是基于文件的 key-value 存储系统,称为分布式文件存储服务更为合适。适合存储 4KB~500MB 之间的小文件,如图片网站、短视频网站、文档、app 下载站等,UC、京东、支付宝、迅雷、酷狗等都有使用,其中 UC 基于 FastDFS 向用户提供网盘、广告和应用下载的业务的存储服务
  • FastDFS 与 MogileFS、HDFS、TFS 等都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务
  • 开源地址:https://github.com/happyfish100/fastdfs/
  • 旧地址:https://code.google.com/archive/p/fastdfs/
  • 相关文档:http://www.csource.org/

四、FastDFS架构

  • 详情参阅后面的文章:https://blog.****.net/qq_41453285/article/details/107150127
  • 我们以一个Client端上传文件为例:
    • ①首先客户端 client 发起对 FastDFS 的文件传输动作,是通过连接到某一台 Tracker Server 的指定端口来实现的
    • ②Tracker Server 根据目前已掌握的信息,来决定选择哪一台 Storage Server ,然后将这个 Storage Server 的地址等信息返回给 client
    • ③然后 client 再通过这些信息连接到这台 Storage Server,将要上传的文件传送到给 Storage Server 上
  • FastDFS 服务端有两个重要角色:
    • 跟踪器(tracker):跟踪器主要做调度工作,在访问上起负载均衡的作用
    • 存储节点(storage):存储节点存储文件,完成文件管理的所有功能

FastDFS:01---分布式存储概述、fastdfs入门介绍