FastDFS简介
FastDFS是国人开发的一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS特点
它具有如下特点:
-
FastDFS是一个轻量级的开源分布式文件系统
-
FastDFS主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡
-
FastDFS实现了软件方式的RAID,可以使用廉价的IDE硬盘进行存储
-
支持存储服务器在线扩容
-
支持相同内容的文件只保存一份,节约磁盘空间
-
FastDFS只能通过Client API访问,不支持POSIX访问方式
-
FastDFS特别适合大中型网站使用,用来存储资源文件(如:图片、文档、音频、视频等等)
FastDFS架构
架构图:
介绍:
-
Tracker Server 跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。记录storage server的状态,是连接Client和Storage server的枢纽
-
Storage Cluster 存储服务器,文件和meta data都保存到存储服务器上
-
group 组,也可称为卷。同组内服务器上的文件是完全相同的
-
meta-data 文件相关属性,键值对(Key Value Pair)方式,如:width=1024,heigth=768
架构解读:
-
只有两个角色,tracker server和storage server,不需要存储文件索引信息。
-
所有服务器都是对等的,不存在Master-Slave关系。
-
存储服务器采用分组方式,同组内存储服务器上的文件完全相同(RAID 1)。
-
不同组的storage server之间不会相互通信。
-
由storage server主动向tracker server报告状态信息,tracker server之间不会相互通信。
上传机制
下载机制
文件同步机制
FastDFS的文件同步写文件时,客户端将文件写至group内一个storage server即认为写文件成功,storage server写完文件后,会由后台线程将文件同步至同group内其他的storage server。
每个storage写文件后,同时会写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,storage会记录向group内其他storage同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有server的时钟保持同步。
storage的同步进度会作为元数据的一部分汇报到tracker上,tracke在选择读storage的时候会以同步进度作为参考。
Docker部署FastDFS
拉取镜像
docker search fastdfs
docker pull delron/fastdfs
构建Tracker Server
创建tracker 目录
mkdir -p /opt/fastdfs/tracker
启动 tracker server
docker run -d --name tracker -p 22122:22122 -v /opt/fastdfs/tracker:/var/fdfs delron/fastdfs tracker
构建Storage Server
创建storage 目录
mkdir -p /opt/fastdfs/storage
启动 storage server
docker run -d --name storage -e TRACKER_SERVER=172.17.0.1:22122 -p 23000:23000 -p 8888:8888 -v /opt/fastdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
这个镜像里面集成了Nginx,如果需要修改nginx的配置 /usr/local/nginx/conf 目录下
如果需要修改storage.conf 在 /etc/fdfs/ 目录下
测试文件上传
首先在 /opt/fastdfs/storage 目录下创建一个readme.txt
文件,然后进入容器
docker exec -it storage /bin/bash
进入容器后执行命令
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /var/fdfs/readme.txt
执行成功后返回文件的路径例如:
group1/M00/00/00/rBEACW0ZSw6Adza4AAAArJjg5T0080.txt
测试文件下载
wget http://127.0.0.1:8888/group1/M00/00/00/rBEACW0ZSw6Adza4AAAArJjg5T0080.txt
- 本文链接: https://www.sunce.wang/archives/fen-bu-shi-wen-jian-cun-chu-xi-tong-fastdfs
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!