IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker部署Fastdfs分布式文件存储系统 -> 正文阅读

[系统运维]Docker部署Fastdfs分布式文件存储系统

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:22122
  pool:
    test-while-idle: true
    test-on-return: false
    test-on-borrow: false
    time-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 {

    @Autowired
    private 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("文件上传失败");
        }
    }
}

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:37:23  更:2021-12-06 15:39:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:14:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码