FastDFS的相关总结

FastDFS

1.什么是 FastDFS

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

2.fastdfs的实现原理

fastdfs实现分组和集群,通过组间集群,实现存储空间的动态扩容,组内集群,实现内容的备份。
在这里插入图片描述

fastdfs架构包括 Tracker server 和 Storage server。Storage Server:文件存储服务器,文件最终存储的物理位置;Tracker Server:追踪调度服务器,他需要进行负载均衡,计算可用的Storage Server,以及监控Storage Server的健康状态,每次都需要给客户端返回可用的Storage Server。

使用fastdfs进行文件上传时,需要做的事情:

  • Storage Server 向Tracker Server, 汇报当前存储节点的状态信息(包括磁盘剩余空间、文件同步状况等统计信息)
  • 客户端程序连接Tracker Server发给上传请求
  • Tracker Server计算可用的Storage Server 节点,返回
  • 客户端将文件上传到Storage Server,并获取返回的file_id(包括路径信息和文件名称)
  • 客户端保存请求地址

3.如何使用fastdfs?

3.1导入pom文件

     <!--fastdfs文件存储-->
        <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>

3.2导入yaml文件

fdfs:
  so-timeout: 1500
  connect-timeout: 600
  #缩略图生成参数
  thumb-image:
    width: 150
    height: 150
  #TrackerList参数,支持多个
  tracker-list: 192.168.136.160:22122
  web-server-url: http://192.168.136.160:8888/

3.3 代码实现

    /**
     * 1 将封面上传到fastdfs,返回imgURL
     * 2 将视频上传到fasrdfs,返回videoURL
     * @param videoThumbnail
     * @param videoFile
     */
   public void   saveVideos(MultipartFile videoThumbnail, MultipartFile videoFile) throws IOException {
       //上传图片
       InputStream imgInputStream = videoThumbnail.getInputStream();
       long imgSize = videoThumbnail.getSize();
       String imgExtName = videoThumbnail.getOriginalFilename().substring(videoThumbnail.getOriginalFilename().lastIndexOf('.') + 1);
       StorePath imgStorePath = client.uploadFile(imgInputStream, imgSize, imgExtName, null);
       String imgURL = webServer.getWebServerUrl()+imgStorePath.getFullPath();

       //上传视频
       InputStream videoInputStream = videoFile.getInputStream();
       long videoSize = videoFile.getSize();
       String videoExtName = videoFile.getOriginalFilename().substring(videoFile.getOriginalFilename().lastIndexOf('.') + 1);
       StorePath videoStorePath = client.uploadFile(videoInputStream, videoSize, videoExtName, null);
       String videoURL = webServer.getWebServerUrl()+videoStorePath.getFullPath();

   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值