分布式文件服务器教程,SpringBoot2.0 整合 FastDFS 中间件,实现文件分布式管理

一、FastDFS简介

1、FastDFS作用

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件上传、文件下载等,解决了大容量存储和负载均衡的问题。

安装连接:

安装流程详解

2、核心角色

FastDFS是由跟踪服务器(trackerserver)、存储服务器(storageserver)和客户端(client)三个部分组成。

1)跟踪服务器

FastDFS的协调者,负责管理所有的storage server和group,每个storage在启动后会连接Tracker,告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group到[storage server list]的映射表。

2)存储服务器

以组(group)为单位,一个group内包含多台storage机器,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。

3)客户端

业务请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互。

3、运转流程

1、存储服务定时向跟踪服务上传状态信息;

2、客户端发起请求;

3、跟踪器同步存储器状态,返回存储服务端口和IP;

4、客户端执行文件操作(上传,下载)等。

二、与SpringBoot2整合

1、核心步骤

1)、配置FastDFS执行环境

2)、文件上传配置

3)、整合Swagger2测试接口

2、核心依赖

com.github.tobato

fastdfs-client

1.26.5

io.springfox

springfox-swagger2

2.6.1

io.springfox

springfox-swagger-ui

2.6.1

3、配置FastDFS

0) 核心配置文件

fdfs:

# 链接超时

connect-timeout: 60

# 读取时间

so-timeout: 60

# 生成缩略图参数

thumb-image:

width: 150

height: 150

tracker-list: 192.168.72.130:22122

1) 核心配置类

@Configuration

@Import(FdfsClientConfig.class)

// Jmx重复注册bean的问题

@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)

public class DfsConfig {

}

2)文件工具类

@Component

public class FileDfsUtil {

private static final Logger LOGGER = LoggerFactory.getLogger(FileDfsUtil.class);

@Resource

private FastFileStorageClient storageClient ;

/**

* 上传文件

*/

public String upload(MultipartFile multipartFile) throws Exception{

String originalFilename = multipartFile.getOriginalFilename().

substring(multipartFile.getOriginalFilename().

lastIndexOf(".") + 1);

StorePath storePath = this.storageClient.uploadImageAndCrtThumbImage(

multipartFile.getInputStream(),

multipartFile.getSize(),originalFilename , null);

return storePath.getFullPath() ;

}

/**

* 删除文件

*/

public void deleteFile(String fileUrl) {

if (StringUtils.isEmpty(fileUrl)) {

LOGGER.info("fileUrl == >>文件路径为空...");

return;

}

try {

StorePath storePath = StorePath.parseFromUrl(fileUrl);

storageClient.deleteFile(storePath.getGroup(), storePath.getPath());

} catch (Exception e) {

LOGGER.info(e.getMessage());

}

}

}

4、文件上传配置

spring:

application:

name: ware-fast-dfs

servlet:

multipart:

enabled: true

max-file-size: 10MB

max-request-size: 20MB

5、配置Swagger2

主要用来生成文件上传的测试界面。

1)配置代码类

@Configuration

public class SwaggerConfig {

@Bean

public Docket createRestApi() {

return new Docket(DocumentationType.SWAGGER_2)

.apiInfo="测试FastDFS文件上传")

@RequestMapping(value = "/uploadFile",headers="content-type=multipart/form-data", method = RequestMethod.POST)

public ResponseEntity uploadFile (@RequestParam("file") MultipartFile file){

String result ;

try{

String path = fileDfsUtil.upload(file) ;

if (!StringUtils.isEmpty(path)){

result = path ;

} else {

result = "上传失败" ;

}

} catch (Exception e){

e.printStackTrace() ;

result = "服务异常" ;

}

return ResponseEntity.ok(result);

}

/**

* 文件删除

*/

@RequestMapping(value = "/deleteByPath", method = RequestMethod.GET)

public ResponseEntity deleteByPath (){

String filePathName = "group1/M00/00/00/wKhIgl0n4AKABxQEABhlMYw_3Lo825.png" ;

fileDfsUtil.deleteFile(filePathName);

return ResponseEntity.ok("SUCCESS") ;

}

}

2、执行流程

1、访问http://localhost:7010/swagger-ui.html测试界面

2、调用文件上传接口,拿到文件在FastDFS服务的路径

3、浏览器访问:http://192.168.72.130/group1/M00/00/00/wKhIgl0n4AKABxQEABhlMYw_3Lo825.png

4、调用删除接口,删除服务器上图片

5、清空浏览器缓存,再次访问图片Url,回返回404

四、源代码地址

GitHub地址:知了一笑

https://github.com/cicadasmile/middle-ware-parent

码云地址:知了一笑

https://gitee.com/cicadasmile/middle-ware-parent

如果您觉得本文的内容对您的学习有所帮助:f10a8ba38c775c2859e7dd540be06565.png

关键字:SpringBoot2.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值