美文网首页docker
【docker】安装FastDFS,并使用java测试上传

【docker】安装FastDFS,并使用java测试上传

作者: 扮鬼之梦 | 来源:发表于2019-06-13 10:57 被阅读0次

    常用的分布式文件存储系统

    1.FastDFS(适合存储小文件)
    2.Hdfs(适合存储大文件)
    3.gfs(适合存储大文件)

    FastDFS


    Tracker 文件跟踪

    Storage 文件存储

    组:storage名称一致,为同一组,同一组,文件相同,文件备份

    不同组:文件不相同,主要做负载

    作者:https://github.com/happyfish100

    镜像安装(以下出现的ip都改为自己的服务器ip)

    Run as a tracker

    docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
    

    Run as a storage server

    docker run -d --name storage --net=host -e TRACKER_IP=<your>:22122 -e GROUP_NAME=<group name> morunchang/fastdfs sh storage.sh
    

    运行成功后


    修改nginx配置

    进入容器

    docker exec -it storage sh
    

    编辑nginx配置文件

    vi etc/nginx/conf/nginx.conf
    

    将8080改为80


    java上传测试

    参考项目地址:https://github.com/tobato/FastDFS_Client

    1.导入依赖

    <dependency>
        <groupId>com.github.tobato</groupId>
        <artifactId>fastdfs-client</artifactId>
        <version>1.26.2</version>
    </dependency>
    

    2.添加ComponetImport 配置类

    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.EnableMBeanExport;
    import org.springframework.context.annotation.Import;
    
    import com.github.tobato.fastdfs.FdfsClientConfig;
    import org.springframework.jmx.support.RegistrationPolicy;
    
    /**
     * 导入FastDFS-Client组件
     * @author tobato
     */
    @Configuration
    @Import(FdfsClientConfig.class)
    // 解决jmx重复注册bean的问题
    @EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
    public class ComponetImport {
        // 导入依赖组件
    }
    
    1. yml配置
    fdfs:
      so-timeout: 1501
      connect-timeout: 601 
      thumb-image:             #缩略图生成参数
        width: 150
        height: 150
      tracker-list:            #TrackerList参数,支持多个
        - 192.168.40.128:22122
      pool:
        max-total: 50
    

    4.上传工具类

    import java.io.IOException;
    import java.io.InputStream;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    import org.springframework.web.multipart.MultipartFile;
    
    import com.github.tobato.fastdfs.domain.StorePath;
    import com.github.tobato.fastdfs.service.FastFileStorageClient;
    
    @Component
    public class FastDfsUtils {
        @Autowired
        FastFileStorageClient client;
    
        /**
         * 上传文件
         */
        public String uploadFile(String groupName,MultipartFile file) {
            String filePath = null;
            InputStream inputStream = null;
            try {
                inputStream = file.getInputStream();
                // 组名,文件流,文件大小,文件的后缀名
                StorePath uploadFile = client.uploadFile(groupName, inputStream, inputStream.available(), getFileSuffix(file.getOriginalFilename()));
                // 组名+文件路径和文件名,访问时前面要加服务器地址
                filePath = uploadFile.getFullPath();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return filePath;
        }
    
        /**
         * 删除文件 
         * groupName "g1" 
         * path "M00/00/00/wKgogF0ADUSAdolnAAAY5E7F2PQ080.jpg"
         */
        public void deleteFile(String groupName, String path) {
            client.deleteFile(groupName, path);
        }
        
        /**
         * 获取文件后缀名
         */
        private String getFileSuffix(String fileName) {
            return fileName.substring(fileName.lastIndexOf(".")+1);
        }
    
    }
    

    5.访问
    工具类返回的地址为:
    g1/M00/00/00/wKgogF0ADUSAdolnAAAY5E7F2PQ080.jpg
    访问时需在前面加上服务器地址:
    http://192.168.40.128/g1/M00/00/00/wKgogF0ADUSAdolnAAAY5E7F2PQ080.jpg
    若未修改nginx配置则访问地址为:
    http://192.168.40.128:8080/g1/M00/00/00/wKgogF0ADUSAdolnAAAY5E7F2PQ080.jpg

    相关文章

      网友评论

        本文标题:【docker】安装FastDFS,并使用java测试上传

        本文链接:https://www.haomeiwen.com/subject/hgkjfctx.html