# 分布式文件存储解决方案

# FastDFS技术方案

推荐阅读

  1. 分布式海量文件存储--基于 Docker 来安装 FastDFS (opens new window)
  2. 使用docker搭建FastDFS文件系统 (opens new window)
  3. 使用SpringBoot上传文件到FastDFS (opens new window)
  4. 分布式文件系统FastDFS详解 (opens new window)
  5. 一次FastDFS并发问题的排查经历 (opens new window)
  6. spring boot集成FastDFS文件上传下载 (opens new window)
  7. fastdfs-client-java|spring boot集成FastDFS文件示例 (opens new window)
  8. 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

1
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>
1
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
1
2
3
4
5
6
7
8
9
10
11
12

step03: FastDFSClient、FastDFSController参考SpringBoot2-FastDFS (opens new window)

CountDownLatch

CountDownLatch可用于创建并发,在启动的过程中,创建一堆线程,并阻塞等待线程创建完成后,整体一起并发执行以模拟高并发业务场景。

上次更新: 2020-05-26 19:13:02