分布式存储系统 FastDFS - 使用样例
分布式存储系统 FastDFS - 使用样例
搭建服务
我们使用docker进行搭建。
#拉取镜像
docker pull delron/fastdfs
#创建tracker容器
docker run -d --network=host --restart always --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
#创建storage容器
docker run -d --network=host --restart always --name storage -e TRACKER_SERVER=192.168.56.11:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
#进入storage容器,到storage的配置文件中配置http访问的端口,配置文件在/etc/fdfs目录下的storage.conf。
docker exec -it storage /bin/bash
#默认的http端口为8888,可以修改也可以配置
# the port of the web server on this storage server
http.server_port=8888
#配置nginx,在/usr/local/nginx目录下,修改nginx.conf文件
#默认配置如下:
server {
listen 8888;
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#默认的存储路径为/var/fdfs/data
java client使用
server项目导入依赖:
<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
<version>1.26.7</version>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
application.properties
# ===================================================================
#
# ===================================================================
fdfs.so-timeout = 1501
fdfs.connect-timeout = 601
fdfs.thumb-image.width= 150
fdfs.thumb-image.height= 150
fdfs.tracker-list=192.168.56.11:22122
spring.servlet.multipart.max-file-size=30MB
spring.servlet.multipart.max-request-size=30MB
测试
package com.tanhua.server;
import com.github.tobato.fastdfs.domain.fdfs.StorePath;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.File;
import java.io.IOException;
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestFastDFS {
@Autowired
protected FastFileStorageClient storageClient;
@Test
public void testUpload(){
String path = "C:\\Users\\zhijun\\Desktop\\pics\\1.jpg";
File file = new File(path);
try {
StorePath storePath = this.storageClient.uploadFile(FileUtils.openInputStream(file), file.length(), "jpg", null);
System.out.println(storePath); //StorePath [group=group1, path=M00/00/00/wKgfUV2GJSuAOUd_AAHnjh7KpOc1.1.jpg]
System.out.println(storePath.getFullPath());//group1/M00/00/00/wKgfUV2GJSuAOUd_AAHnjh7KpOc1.1.jpg
} catch (IOException e) {
e.printStackTrace();
}
}
}