分布式文件系统之FastDFS

分布式文件系统之FastDFS

目录结构:

一 分布式文件系统

二 FastDFS入门

三 FastDFS环境搭建

四 FastDFS在Java项目中开发示例

五 FastDFS分布式文件系统集群

一 分布式文件系统

分布式文件系统 (Distributed File System) 是一个软件/软件服务器,这个软件可以用来管理文件。但这个软件所管理的文件通常不是在一个服务器节点上,而是在多个服务器节点上,这些服务器节点通过网络相连构成一个庞大的文件存储服务器集群,这些服务器都用于存储文件资源,通过分布式文件系统来管理这些服务器上的文件。

常见的分布式文件系统有:FastDFS、GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS等。

分布式文件系统与传统文件系统对比

传统方式弊端:

  • 如果用户数量多,IO操作比较多,对磁盘访问压力很大
  • 如果磁盘发生故障,会造成数据丢失
  • 存储容量有限

二 FastDFS入门

1 FastDFS简介

FastDFS是一个开源的轻量级分布式文件系统,为互联网应用量身定做,简单、灵活、高效,采用C语言开发,由阿里巴巴开发并开源。

FastDFS对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)等,解决了大容量文件存储的问题,特别适合以文件为载体的在线服务,如相册网站、文档网站、图片网站、视频网站等等。

FastDFS充分考虑了冗余备份、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

2 FastDFS整体架构

FastDFS文件系统由两大部分构成,一个是客户端,一个是服务端

客户端通常指我们的程序,比如我们的Java程序去连接FastDFS、操作FastDFS,那我们的Java程序就是一个客户端,FastDFS提供专有API访问,目前提供了C、Java和PHP几种编程语言的API,用来访问FastDFS文件系统。

服务端由两个部分构成:一个是跟踪器(tracker),一个是存储节点(storage)

tracker跟踪器主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 tracker,告知自己所属 group 等信息,并保持周期性心跳。tracker记录group以及每个group的存储信息。在内存中记录集群中存储节点storage的状态信息,是前端Client和后端存储节点storage的枢纽。因为相关信息全部在内存中,Tracker server的性能非常高,一个较大的集群(比如上百个group)中有3台就足够了。

storage存储节点主要提供存储文件和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。存储文件和文件属性(meta data)都保存到存储服务器磁盘上,完成文件管理的所有功能:文件存储、文件同步和提供文件访问等。group内每个storage的存储依赖于本地文件系统,storage可配置多个数据存储目录,比如有10块磁盘,分别对应在/data/disk1-/data/disk10,则可将这10个目录都配置为storage的数据存储目录

架构图:

2.1 文件上传:

  1. client询问tracker上传文件的storage,不需要附加参数
  2. tracker返回一台可用的storage
  3. client直接和storage通信完成文件上传

fileid:文件组名和路径

2.2 文件下载

客户端uploadfile成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件。

  1. client询问tracker下载文件的storage,参数为文件标识(组名和文件名)
  2. tacker返回一台可用的storage
  3. client直接和storage通信完成下载

三 FastDFS环境搭建

1 FastDFS安装(单机版)

1.1 工具准备

(1)检查Linux上是否安装了 gcc、libevent、libevent-devel

libevent:是一个用C语言编写的、轻量级的开源高性能IO库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,线程安全。Libevent 已经被广泛的应用,作为底层的网络库;比如 memcached、 Vomit、 Nylon、 Netchat等等。 FastDFS v3.0 版本以后,使用到了libevent库来处理网络连接请求

libevent-devel:libevent 的头文件、库和开发文档 此软件包包含头文件、静态库和开发文档等

yum list installed | grep gcc
yum list installed | grep libevent
yum list installed | grep libevent-devel
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 分布式文件系统之FastDFS