Docker部署Fastdfs分布式文件存储系统

  • Fastdfs分布式文件存储系统
    • 拉取镜像
    • 部署Tracker和Storage
    • 开放端口
    • SpringBoot代码示例

Fastdfs分布式文件存储系统

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

拉取镜像

docker pull ygqygq2/fastdfs-nginx

部署Tracker和Storage

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

docker run -d --network=host --name storage0 -e TRACKER_SERVER=你的IP地址:22122 -v /root/fdfs/storage0:/var/fdfs ygqygq2/fastdfs-nginx storage

开放端口

tracker是22122

storage是23000

nginx是8080

SpringBoot代码示例

maven

<dependency><groupId>com.luhuiguo</groupId><artifactId>fastdfs-spring-boot-starter</artifactId><version>0.2.0</version>
</dependency>

yml

fdfs:tracker-list: 你的ip:22122pool:test-while-idle: truetest-on-return: falsetest-on-borrow: falsetime-between-eviction-runs-millis: 60000

code

import cn.hutool.core.io.FileUtil;
import com.luhuiguo.fastdfs.domain.MetaData;
import com.luhuiguo.fastdfs.domain.StorePath;
import com.luhuiguo.fastdfs.service.FastFileStorageClient;
import com.yy.treasurehouse.dto.Result;
import com.yy.treasurehouse.web.exception.GlobalException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.annotations.ApiIgnore;import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashSet;
import java.util.Set;@RestController
@RequestMapping(value = "/other/fdfs")
@Api(tags = "fastfdfs相关")
public class FdfsController {@Autowiredprivate FastFileStorageClient fastFileStorageClient;@GetMapping(value = "/meta")@ApiOperation(value = "获取文件meta信息")@ApiImplicitParams({@ApiImplicitParam(name = "group", value = "文件组", required = true, paramType = "query", dataType = "String"),@ApiImplicitParam(name = "path", value = "文件路径", required = true, paramType = "query", dataType = "String"),})public Result<Set<MetaData>> meta(@RequestParam String group, @RequestParam String path) {Set<MetaData> metaData = fastFileStorageClient.getMetadata(group, path);return new Result<>().ok(metaData);}@GetMapping(value = "/download")@ApiOperation(value = "下载")@ApiImplicitParams({@ApiImplicitParam(name = "group", value = "文件组", required = true, paramType = "query", dataType = "String"),@ApiImplicitParam(name = "path", value = "文件路径", required = true, paramType = "query", dataType = "String"),})public void download(@ApiIgnore HttpServletResponse response, @RequestParam String group, @RequestParam String path) {byte[] bytes = fastFileStorageClient.downloadFile(group, path);try {response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(FileUtil.getName(path), "UTF-8"));response.setContentType("application/octet-stream");response.setContentLength(bytes.length);response.setCharacterEncoding("utf-8");response.getOutputStream().write(bytes);} catch (IOException e) {e.printStackTrace();} finally {try {ServletOutputStream outputStream = response.getOutputStream();if (outputStream != null) {outputStream.close();}} catch (IOException e) {e.printStackTrace();}}}@DeleteMapping@ApiOperation(value = "删除")@ApiImplicitParams({@ApiImplicitParam(name = "group", value = "文件组", required = true, paramType = "query", dataType = "String"),@ApiImplicitParam(name = "path", value = "文件路径", required = true, paramType = "query", dataType = "String"),})public Result delete(@RequestParam String group, @RequestParam String path) {fastFileStorageClient.deleteFile(group, path);return new Result<>().ok();}@PostMapping@ApiOperation(value = "新增")public Result<String> save(MultipartFile multipartFile) {String extName = FileUtil.extName(multipartFile.getOriginalFilename());try {Set<MetaData> metaDataSet = new HashSet<>();metaDataSet.add(new MetaData("size", String.valueOf(multipartFile.getSize())));metaDataSet.add(new MetaData("extName", extName));metaDataSet.add(new MetaData("oldName", multipartFile.getOriginalFilename()));StorePath storePath = fastFileStorageClient.uploadFile(multipartFile.getInputStream(), multipartFile.getSize(), extName, metaDataSet);return new Result<>().ok(storePath.getFullPath());} catch (IOException e) {e.printStackTrace();throw new GlobalException("文件上传失败");}}
}

Docker部署Fastdfs分布式文件存储系统相关推荐

  1. 超简单用Docker安装FastDFS分布式文件存储系统

    个人简介 作者是一个来自河源的大三在校生,以下笔记都是作者自学之路的一些浅薄经验,如有错误请指正,将来会不断的完善笔记,帮助更多的Java爱好者入门. Docker安装FastDFS分布式文件存储系统 ...

  2. FastDfs分布式文件存储系统

    FastDfs分布式文件存储系统 FastDfs 是一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡.主要解决了海量数据存储问题,特别适 ...

  3. 搭建FastDFS分布式文件存储系统教程

    转载来源:https://github.com/happyfish100/fastdfs/wiki 搭建FastDFS分布式文件存储系统教程 环境准备 使用的系统软件 名称 说明 centos 7.x ...

  4. FastDFS - 分布式文件存储系统(文件存储从此无忧)

    简介 FastDFS 是一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡.主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4K ...

  5. FastDFS - 分布式文件存储系统

    目录 一.分布式文件存储 1.分布式文件存储的由来 2.常见的分布式存储框架 二.FastDFS介绍 三.FastDFS安装 1.拉取镜像文件 2.构建Tracker服务 3.构建Storage服务 ...

  6. fastdfs安装_用asp.net core结合fastdfs打造分布式文件存储系统

    今天主要是对开发过程,以及对FastDFS这个通用的分布式文件存储服务的单机及集群安装部署过程做个总结.希望对想要自建分布式文件系统的朋友有所帮助. 什么是FastDFS 这里先简单介绍下分布式文件存 ...

  7. 用asp.net core结合fastdfs打造分布式文件存储系统

    最近被安排开发文件存储微服务,要求是能够通过配置来无缝切换我们公司内部研发的文件存储系统,FastDFS,MongDb GridFS,阿里云OSS,腾讯云OSS等.根据任务紧急度暂时先完成了通过配置来 ...

  8. client mac addr不能开机进不去系统_用asp.net core结合fastdfs打造分布式文件存储系统

    今天主要是对开发过程,以及对FastDFS这个通用的分布式文件存储服务的单机及集群安装部署过程做个总结.希望对想要自建分布式文件系统的朋友有所帮助. 什么是FastDFS 这里先简单介绍下分布式文件存 ...

  9. java电商项目搭建-------分布式文件存储系统(fastDFS)

    人之所以痛苦,那是因为你在成长.--------magic_guo 微服务项目,由于访问量和系统的高可用性能,会将上传的文件图片等存放在搭建的分布式文件存储系统:现在比较流行的文件存储系统有fastD ...

最新文章

  1. vba和python哪个好学-python和vba学哪个
  2. js 实现上下拖动改变父 div 的高度,左右上下拖动动态分割孩子的宽高
  3. SAP Spartacus 服务器端渲染优化引擎的参数 SsrOptimizationOptions
  4. linux —— shell 编程(文本处理)
  5. FreeRTOS列表
  6. Oracle Cluster Health Monitor(CHM)简介
  7. t–sql pl–sql_SQL Server –在T-SQL中使用最低的度量单位
  8. 【问题记录】python 函数 传入一个对象返回一个对象值得注意
  9. 如何通过Google学术快速获取参考文献引用格式-2021年
  10. 使用计时器setInterval实现倒计时
  11. github 设置语言为中文
  12. 创强教师办公用计算机配备要求,教师办公室电脑使用与管理有哪些规定
  13. GlusterFS探究(一): dht,afr,fuse, mgmt 层 几个问题总结
  14. 长短期记忆网络LSTM
  15. AutoLeaders控制组——51单片机学习笔记(蜂鸣器、AT24C02芯片)
  16. iTunes制作铃声------将制作铃声导入到手机中
  17. PC企业微信HOOK接口,获取指定好友的详细信息
  18. 房价预测Python
  19. python+ddt
  20. Unity 点击、双击、连击、长按 事件检测(支持PC和移动端)

热门文章

  1. 脉冲神经网络原理及应用,脉冲神经网络发展前景
  2. JSP和HTML有什么区别
  3. 【软件测试】集成测试和系统测试
  4. 国产CPU深度研究报告(110页)
  5. 谷歌Quoc V. Le团队新作FLASH:高效Transformer新设计!训练成本暴减!
  6. 民航客机空中观光游览虚拟三维实景应用方法及系统
  7. 原生API编写简单富文本编辑器001
  8. 边缘计算硬件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  9. ebay注册流程_新手卖家如何注册ebay账户?
  10. ros找不到包的两种原因