FastDFS概述
- FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
- FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
- FastDFS由阿里资深架构师余庆开发。
Fastdfs原理
FastDFS包含Tracker Server和Storage Server;
客户端请求Tracker Server进行文件的上传与下载;
Tracker Server调度Storage Server最终完成上传与下载。
- Tracker (追踪者)
+ 作用是负载均衡和调度,它管理着存储服务(Storage Server),可以理解为:“大管家,追踪者,调度员”;
+ Tracker Server可以集群,实现高可用,策略为“轮询”。
- Storage (贮存器)
+ 作用是文件存储,客户端上传的文件最终存储到storage服务器上;
+ storage集群采用分组的方式,同组内的每台服务器是平等关系,数据同步,目的是实现数据备份,从而高可用,而不同组的服务器之间是不通信的;
+ 同组内的每台服务器的存储量不一致的情况下,会选取容量最小的那个,所以同组内的服务器之间软硬件最好保持一致。
+ Storage Server会连接集群中的所有Tracker Server,定时向他们汇报自己的状态,例如:剩余空间,文件同步情况,文件上传下载次数等信息。
上传文件流程
查询文件流程
安装Fastdfs
1、安装gcc
1 | r复制代码yum install -y gcc gcc-c++ |
2、下载libfastcommon到/usr/local下
1 | bash复制代码cd /usr/local |
3、解压libfastcommon
1 | bash复制代码tar -zxvf V1.0.7.tar.gz |
4、安装libfastcommon
1 | bash复制代码./make.sh |
5、下载fastdfs
1 | bash复制代码wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz |
6、解压fastdfs并安装
1 | bash复制代码tar -zxvf V5.05.tar.gz |
7、将conf目录下的所有文件复制到/etc/fdfs/
1 | bash复制代码cp /usr/local/fastdfs-5.05/conf/* /etc/fdfs/ |
8、配置tracker
1 | bash复制代码cd /etc/fdfs |
主要配置
1 | ini复制代码#端口号 |
如果base_path不存在,则需要创建目录
1 | bash复制代码mkdir /usr/local/fastdfs |
9、配置storage
1 | bash复制代码cd /etc/fdfs |
主要配置
1 | ini复制代码#配置组名 |
10、启动服务
启动tracker
1 | bash复制代码/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart |
启动storage
1 | bash复制代码/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart |
查看服务
1 | 复制代码netstat -ntlp |
整合Nginx模块
1、上传fastdfs-nginx-module_v1.16.tar.gz 到/usr/local
2、解压nginx模块
1 | 复制代码tar -zxvf fastdfs-nginx-module_v1.16.tar.gz |
3、修改config文件,将文件中的 /usr/local/ 路径改为 /usr/
1 | lua复制代码cd /usr/local/fastdfs-nginx-module/src |
4、将fastdfs-nginx-module/src下的mod_fastdfs.conf拷贝至/etc/fdfs下
1 | bash复制代码cp mod_fastdfs.conf /etc/fdfs/ |
5、修改/etc/fdfs/mod_fastdfs.conf
1 | ini复制代码vi /etc/fdfs/mod_fastdfs.conf |
6、将libfdfsclient.so拷贝至/usr/lib下
1 | bash复制代码cp /usr/lib64/libfdfsclient.so /usr/lib/ |
7、创建nginx/client目录
1 | bash复制代码mkdir -p /var/temp/nginx/client |
安装Nginx
1、 将nginx-1.8.0.tar.gz上传到/usr/local
2、解压:tar -zxvf nginx-1.8.0.tar.gz
3、安装依赖库
1 | 复制代码yum install pcre |
4、进入nginx解压的目录下:
1 | bash复制代码cd /usr/local/nginx-1.8.0 |
5、安装
1 | javascript复制代码./configure \ |
编译、安装
1 | go复制代码make |
安装成功
6、拷贝配置文件http.conf和mime.types
1 | bash复制代码cd /usr/local/fastdfs-5.0.5/conf |
7、修改nginx配置文件
1 | bash复制代码cd /usr/local/nginx/conf/ |
8、关闭nginx,并启动nginx
1 | bash复制代码pkill -9 nginx |
9、启动nginx
SpringBoot整合Fastdfs
1、创建SpringBoot项目
2、引入依赖
1 | xml复制代码 <dependency> |
3、启动类上配置
1 | less复制代码@Import(FdfsClientConfig.class) |
4、配置文件
1 | ini复制代码fdfs.so-timeout=3000 |
5、控制器
1 | java复制代码@Controller |
Java对象
1 | vbnet复制代码public class JsonResult { |
6、测试页面
页面使用了Vue+ElementUI
1 | xml复制代码<!DOCTYPE html> |
上传效果
本文转载自: 掘金