# 分布式文件存储解决方案
# FastDFS技术方案
推荐阅读
- 分布式海量文件存储--基于 Docker 来安装 FastDFS (opens new window)
- 使用docker搭建FastDFS文件系统 (opens new window)
- 使用SpringBoot上传文件到FastDFS (opens new window)
- 分布式文件系统FastDFS详解 (opens new window)
- 一次FastDFS并发问题的排查经历 (opens new window)
- spring boot集成FastDFS文件上传下载 (opens new window)
- fastdfs-client-java|spring boot集成FastDFS文件示例 (opens new window)
- FastDFS_Client|spring boot集成FastDFS文件示例 (opens new window)
docker pull delron/fastdfs
docker run -d --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
# 导入到其他系统后,重新tag
docker tag 8487e86fc6ee delron/fastdfs:latest
docker run -d --network=host --name storage -e TRACKER_SERVER=172.30.154.245:22122 \
-v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
2
3
4
5
6
7
8
9
10
Test
测试fastDFS是否支持图片(png)、文档(.sh、.txt、.xlsx、.ppt)、视频(imp4)格式是否支撑?
测试结果是支持,文件上传后,fastDFS会生成文件路径(生成随机文件名),并加上文件的后缀返回路径。浏览器打开该路径时,如果为脚本文件,则直接会下载。
如果为图片则自动下载。本次测试环境安装参考 (opens new window)
文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。
http://172.30.154.243:8888/group1/M00/00/00/rB6a9l6mN22ADIniAA3dLbKPMHo644.png 节点一浏览器访问自动下载(各个storage节点都可以下载)
http://172.30.154.244:8888/group1/M00/00/00/rB6a9l6mN22ADIniAA3dLbKPMHo644.png 节点二浏览器访问
http://172.30.154.246:8888/group1/M00/00/00/rB6a9l6mN22ADIniAA3dLbKPMHo644.png 节点三浏览器访问
http:😕/172.30.154.246:8888/group1/M00/00/00/rB6a9l6mOeuAZv_mAAAH7fDst5A6325.sh 浏览器自动下载
http:😕/172.30.154.246:8888/group1/M00/00/00/rB6a9l6mOfiAAGk5AAACFyspUjE.0.conf 浏览器自动下载
http:😕/172.30.154.246:8888/group1/M00/00/00/rB6a9l6mOf-Aam7HAAUsSuCCSEM17.pptx 浏览器自动下载
http:😕/172.30.154.246:8888/group1/M00/00/00/rB6a9l6mOgeAO4FzAAAiyps6ICQ64.xlsx 浏览器自动下载
使用SpringBoot2.x集成FastDFS客户端后,删除服务器上文件发现,浏览器再次访问地址依然有效,并不是立即删除,而是过了几分钟后,再次访问则失效。 尝试再次去删除该文件时,测试程序报错:“com.github.tobato.fastdfs.exception.FdfsServerException: 错误码:2,错误信息:找不到节点或文件”
SpringBoot2.x配置参考如下:
step01: POM配置
<!-- fastdfs-client-java -->
<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
<version>1.26.5</version>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
2
3
4
5
6
7
8
9
10
11
12
step02: application.properties配置
# fastFDS配置
fdfs.so-timeout=1501
fdfs.connect-timeout=601
fdfs.thumb-image.width=150
fdfs.thumb-image.height=150
fdfs.web-server-url=http://172.30.154.246:8888/
fdfs.tracker-list=172.30.154.245:22122
fdfs.pool.max-total=-1
fdfs.pool.max-wait-millis=5000
fdfs.pool.max-total-per-key=50
fdfs.pool.max-idle-per-key=10
fdfs.pool.min-idle-per-key=5
2
3
4
5
6
7
8
9
10
11
12
step03: FastDFSClient、FastDFSController参考SpringBoot2-FastDFS (opens new window)
CountDownLatch
CountDownLatch可用于创建并发,在启动的过程中,创建一堆线程,并阻塞等待线程创建完成后,整体一起并发执行以模拟高并发业务场景。