FastDFS+docker建立分布式文件系统

1,为什么需要单独搭建分布式文

在单系统时代,可以在系统的resource目录下直接建立image,file目录用于存储图片等各种文件,这样做优点用处,直接在项目需要处引用图片就行,但是,缺点也非常明显,代码和文件资源相互杂糅,导致系统臃肿混乱,并且随着静态资源的增多,导致加载速度下降,并且不利于吸引同扩展,出于各种考虑,单独分离出文件系统

2,FastDFS相关知识点

概念:FastDFS 是以C语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载),特别适合以文件为载体的在线服务,如图片网站,视频网站等

架构:FastDFS分为客户端(client),追踪服务器(tracker server),存储服务器(storage server)三个角色

  • 客户端(client):主要是上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。每个客户端服务器都需要安装Nginx
  • 服务服务器(tracker server):,主要做调度工作,接收客户端请求,记录存储服务器集群中的的状态,然后调度文件的存储位置
  • 存储服务器(storage server):用于存储文件和文件属性

文件的存储过程:

FastDFS+docker建立分布式文件系统

3,利用docker在Linux上安装FastDFS,引用地址(https://zhuanlan.zhihu.com/p/89922854

1)拉取镜像

sudo docker pull delron/fastdfs

FastDFS中包含了storage镜像和tracker镜像还有nginx服务

 2)构建并且运行运行trracker镜像

docker run -d --network=host --name tracker -v /root/fdfs:/var/root delron/fastdfs tracker

3)构建并且运行stroragei镜像

docker run -d --network=host --name storage -e TRACKER_SERVER=192.168.99.100:22122 -v /root/fdfs:/var/root/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

-e TRACKER_SERVER = 你的Linux ip地址, -v 表示把 外部Linux  的 /root/fdfs目录映射到  docker的  /var/root/fdfs的目录下,也就是说,文件上传到到docker的/root/fdfs文件目录下的时候,文件辉转存到镜像外Linxu系统的 /root/fdfs目录下

4)进入storage镜像

docker exec -it storage /bin/bash

5)随便下载一张图片

wget https://upload-images.jianshu.io/upload_images/11693390-a26b21909429f7d2.png

6)上传图片

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf 11693390-a26b21909429f7d2.png

7)得到字符串地址

group1/M00/00/00/wKglyF62tnyACzI-AC-ojGdpZlE570.png

这段字符串由组名,虚拟磁盘路径,数据两级目录,文件名组成

8)可以通过ip地址+端口号(默认8888+地址 访问图片(实际项目中此地址会存入数据库)

相关推荐