概述
文章目录
- 1. fastDFS
- 2. fastDFS主要功能
- 3. fastDFS中的角色
- 3.1 tracker server 追踪服务器
- 3.2 storage server 储存服务器
- 3.3 Group组
- 3.4 meta data
- 4. fastDFS的优点
- 5. fastDFS读写数据的流程
- 5.1 fastDFS写入数据
- 5.2 fastDFS读数据
- 6. fastDFS的单机版的安装
- 6.1 准备安装文件
- 6.2 安装依赖
- 6.2.1 安装GCC依赖
- 6.2.2 安装unzip工具
- 6.2.3 安装libevent
- 6.2.4 安装Nginx所需依赖
- 6.2.5 安装libfastcommon-master
- 6.3 安装单机版fastDFS
- 6.3.1 编译安装fastDFS
- 6.3.2 配置tracker
- 6.3.3 配置storage
- 6.4 nginx的FastDFS模块安装
- 6.4.1 FastDFS的Nginx模块
- 6.4.2 安装Nginx
- 7. 使用fastDFS命令操作fastDFS
- 8. fastDFS集群的搭建
- 9. fastDFS的api操作
1. fastDFS
fastDFS 是以C语言开发的一项开源轻量级分布式文件系统,一般作为资源服务器来使用
2. fastDFS主要功能
- 文件存储
- 文件同步
- 文件的访问(文件上传|文件下载)
- 特别适合以文件为载体的在线服务(图片网站,视频网站,购物网站)
3. fastDFS中的角色
3.1 tracker server 追踪服务器
- 追踪服务器负责接收客户端的请求
- 主要做调度工作, 起负载均衡的作用
- Tracker需要管理的信息也都放在内存中,并且里面所有的Tracker都是对等的(每个节点地位相等),很容易扩展
- 客户端访问集群的时候会随机分配一个Tracker来和客户端交互
- storage server会向tracker server发送心跳,保持连接
3.2 storage server 储存服务器
文件和文件属性( metadata) 都保存到存储服务器上。 Storage server直接利用OS的文件系统调用管理文件。
3.3 Group组
- 组, 也可称为卷。 同组内服务器上的文件是完全相同的 ,同一组内的storage server之间是对等的, 文件上传、 删除等操作可以在任意一台storage server上进行 。
- 同一个组内的机器的数据自行同步
3.4 meta data
meta data:文件相关属性,键值对( Key Value Pair) 方式,如:width=1024,heigth=768 。
4. fastDFS的优点
- 海量的存储:主从型分布式存储,存储空间方便拓展,
- fastDFS对文件名做hash处理,避免出现重复文件
- 然后fastDFS结合Nginx集成, 提高网站效率
- 特别适合以中小文件( 建议范围: 4KB 到 500MB ) 为载体的在线服务, 如相册网站、 视频网站等等。
5. fastDFS读写数据的流程
5.1 fastDFS写入数据
写操作的时候,storage会将他所挂载的所有数据存储目录的底下都创建2级子目录,每一级256个总共65536个,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据作为本地文件存储到该目录中
5.2 fastDFS读数据
当客户端向Tracker发起下载请求时,并不会直接下载,而是先查询storage server(检测同步状态),返回storage server的ip和端口,
然后客户端会带着文件信息(组名,路径,文件名),去访问相关的storage,然后下载文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A9UBzYnH-1628510437879)(assets/14027542-9b9dcd61bd1a9a57.png)]
6. fastDFS的单机版的安装
6.1 准备安装文件
FastDFS_v5.08.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
libfastcommon-master.zip
nginx-1.10.0.tar.gz
6.2 安装依赖
6.2.1 安装GCC依赖
GCC用来对C语言代码进行编译运行,使用yum命令安装:
yum -y install gcc
6.2.2 安装unzip工具
unzip工具用来对.zip文件进行解压的工具
yum install -y unzip zip
6.2.3 安装libevent
yum -y install libevent
6.2.4 安装Nginx所需依赖
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
6.2.5 安装libfastcommon-master
-
解压刚刚上传的
libfastcommon-master.zip
unzip libfastcommon-master.zip
-
进入解压完成的目录:
cd libfastcommon-master
-
编译并且安装:
./make.sh ./make.sh install
到这里为止,所有依赖都已经安装完毕(/usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so ),接下来我们安装FastDFS:
6.3 安装单机版fastDFS
6.3.1 编译安装fastDFS
-
解压
tar -zxvf FastDFS_v5.08.tar.gz -C /opt/
-
进入目录
cd FastDFS
-
编译并安装
./make.sh ./make.sh install
-
安装完成,我们应该能在
/etc/init.d/
目录,通过命令ll /etc/init.d/ | grep fdfs
看到FastDFS提供的启动脚本:fdfs_trackerd #tracker启动脚本 fdfs_storaged #storage启动脚本
-
我们可以在
/etc/fdfs
目录,通过命令查看到以下配置文件模板tarcker.conf.sample
是tracker的配置文件模板storage.conf.sample
是storage的配置文件模板client.conf.sample
是客户端的配置文件模板
6.3.2 配置tracker
- 编辑tracker配置
首先我们将模板文件进行赋值和重命名:
cp tracker.conf.sample tracker.conf
vim tracker.conf
打开tracker.conf
,修改base_path
配置:
#bind_addr= 不配置则代表监听所有地址
bind_addr=
base_path=/var/fdfs/tracker # tracker的数据和日志存放目录
-
创建目录
刚刚配置的目录可能不存在,我们创建出来
mkdir -p /var/fdfs/tracker
-
启动tracker
我们可以使用
sh /etc/init.d/fdfs_trackerd
启动,不过安装过程中,fdfs已经被设置为系统服务,我们可以采用熟悉的服务启动方式:service fdfs_trackerd start # 启动fdfs_trackerd服务,停止用stop systemctl start fdfs_trackerd #centeros7的启动方式
6.3.3 配置storage
-
编辑storage配置
首先我们将模板文件进行赋值和重命名:
cp storage.conf.sample storage.conf vim storage.conf
打开
storage.conf
,修改base_path
配置:base_path=/var/fdfs/storage # storage的数据和日志存放目录 store_path0=/var/fdfs/storage_data # storage的上传文件存放路径 tracker_server=10.10.10.11:22122 # tracker的地址
-
创建目录
刚刚配置的目录可能不存在,我们创建出来,没有目录则会启动失败
mkdir -p /var/fdfs/storage mkdir -p /var/fdfs/storage_data
-
启动storage
我们可以使用
sh /etc/init.d/fdfs_storaged
启动,同样我们可以用服务启动方式:service fdfs_storaged start # 启动fdfs_storaged服务,停止用stop
最后,通过
netstat -nltp|grep fdfs
查看进程:tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 2192/fdfs_trackerd tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 2215/fdfs_storaged
6.4 nginx的FastDFS模块安装
6.4.1 FastDFS的Nginx模块
-
解压
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
-
配置config文件(nginx安装fastdfs-nginx-module模块时要使用到fdfs中的库)
# 进入配置目录 cd /soft/fastdfs-nginx-module/src/ # 修改配置 vim config # 执行下面命令(将配置中的/usr/local改为/usr): :%s+/usr/local/+/usr/+g
-
配置mod_fastdfs.conf
# 编辑该文件 vim /etc/fdfs/mod_fastdfs.cof connect_timeout=10 # 客户端访问文件连接超时时长(单位:秒) tracker_server=192.168.56.101:22122 # tracker服务IP和端口 url_have_group_name=true # 访问链接前缀加上组名 store_path0=/var/fdfs/storage_data # 文件存储路径
-
将src目录下的mod_fastdfs.conf复制到 /etc/fdfs目录
cp mod_fastdfs.conf /etc/fdfs/
-
复制 FastDFS的部分配置文件模板到/etc/fdfs目录
cd /opt/fdfs/conf cp http.conf mime.types /etc/fdfs/
6.4.2 安装Nginx
-
解压
tar -zxvf nginx-1.10.0.tar.gz
-
配置
./configure --prefix=/opt/nginx --add-module=/soft/fastdfs-nginx-module/src
-
编译安装
make && make install
-
配置nginx整合fastdfs-module模块
需要修改nginx配置文件,在/opt/nginx/config/nginx.conf文件中:
vim /opt/nginx/conf/nginx.conf
添加一个server的代理:
server { listen 80; server_name image.leyou.com; # 监听域名中带有group的,交给FastDFS模块处理 location ~/group([0-9])/ { ngx_fastdfs_module; } }
-
启动
nginx # 启动 nginx -s stop # 停止 nginx -s reload # 重新加载配置
7. 使用fastDFS命令操作fastDFS
-
配置
/etc/fdfs/client.conf
#客户端的临时数据存储目录 base_path=/var/fdfs/client #tracker的服务地址 tracker_server=tracker的Ip:22122
-
使用命令
#上传文件 fdfs_upload_file /etc/fdfs/client.conf xxx文件 eg: fdfs_upload_file /etc/fdfs/client.conf /soft/nginx-1.10.0.tar.gz 返回: group1/M00/00/00/CgoKC14KxIOAK7WrAA3emu5kyOM.tar.gz group1:组信息 M00:对应store_path0 /00/00:磁盘路径 group1/M00/00/00/CgoKFWEPit6Af4KgAA3emu5kyOM.tar.gz #下载文件 fdfs_download_file /etc/fdfs/client.conf
8. fastDFS集群的搭建
- 把单机版安装的fastdfs拷贝到其他机器即可
- 如果有多个组只需要修改对应的storage的goupname即可
- 其他机器也要安装nginx及其nginx的fastdfs模块(老版本的FastDFS提供了http服务,但是新版本中已经不再提供服务,需要我们自己通过nginx和其nginx的fastdfs的模块来提供http服务)
- storage和tracker上的nginx提供http服务的端口要保持一致
9. fastDFS的api操作
-
以SpringBoot操作为例
<!--因为fast作者提供的fastdfs的api并不是太友好,所以我们使用goyhub其他作者开源的实现--> <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.26.5</version> </dependency>
-
启动类使用Import注解导入FastDfs的配置类
@Import(FdfsClientConfig.class) public class LyItemApplication { public static void main(String[] args) { SpringApplication.run(LyItemApplication.class, args); } }
-
配置文件配置fastdfs的配置
fdfs: tracker-list: - 10.10.10.11:22122
-
使用fastdfs的api上传文件
@SpringBootTest() @RunWith(SpringRunner.class) public class MyTest { @Autowired private FastFileStorageClient storageClient; @Test public void test01() throws FileNotFoundException { File file = new File("/f:/1.png"); FileInputStream fis = new FileInputStream(file); StorePath storePath = storageClient.uploadFile(fis, file.length(), FilenameUtils.getExtension(file.getName()), null); System.out.println(storePath.getFullPath()); } }
最后
以上就是勤恳大地为你收集整理的fastDFS轻量级分布式文件系统1. fastDFS2. fastDFS主要功能3. fastDFS中的角色4. fastDFS的优点5. fastDFS读写数据的流程6. fastDFS的单机版的安装7. 使用fastDFS命令操作fastDFS8. fastDFS集群的搭建9. fastDFS的api操作的全部内容,希望文章能够帮你解决fastDFS轻量级分布式文件系统1. fastDFS2. fastDFS主要功能3. fastDFS中的角色4. fastDFS的优点5. fastDFS读写数据的流程6. fastDFS的单机版的安装7. 使用fastDFS命令操作fastDFS8. fastDFS集群的搭建9. fastDFS的api操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复